微信公众号支付

博客分类: 微信公众号 阅读次数: comments

微信公众号支付

微信公众号支付

  1. 这个是在微信公众号内操作需要微信用户登录,当然也可以使用h5手机网站来唤起支付宝的
  2. 使用的是jsapi接口

  3. 首先获取微信的的jsapi-ticket 3.1. 生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是企业号号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket。 3.2. 我们可以存储到数据库中避免每次调用,给个过期时间因为access_token是有过期时间
  4. o
  5. 1.获取jsapi接口凭证
  6. 获取微信jsapi_ticket
  7. 查询jsapi_ticket + 产品id 7.1. 没有过期直接用数据库里的 7.2. 过期了再去生成access_token 用接受到的access_token获取 GET_JSAPITICKET_URL 7.3. 返回jsapi_ticket
  8. 这里参数的顺序要按照 key 值 ASCII 码升序排序
  9. 4.1、jsapi_ticket 是公众号用于调用微信JS接口的临时票据
  10. 4.2、noncestr 随机串
  11. 4.3、timestamp 时间戳
  12. 4.4、url 请求地址
  13. 4.5、sha1(string) 签名

    1. $signPackage = array(
  14. “appId” => $appId,
  15. “nonceStr” => $nonceStr,
  16. “timestamp” => $timestamp,
  17. “url” => $url,
  18. “signature” => 签名,
  19. “rawString” => $string
  20. );

  21. 注意 URL 一定要动态获取,不能 hardcode.
  22. 微信公众号支付统一下单
  23. wx_mch_id 微信支付商户号码
  24. [appid] => wx004b3b5e159b0d47
  25. [mch_id] => 1304682801
  26. [nonce_str] => nolh7jg7c5dhywp8qcb5igs9gboge385
  27. [body] => 发红包测试
  28. [out_trade_no] => HLX2018041111074712722900
  29. [total_fee] => 1
  30. [spbill_create_ip] => 127.0.0.1
  31. [notify_url] => http://beta.m.haolexue.cc/callback/weixin
  32. [trade_type] => JSAPI
  33. [openid] => ovVALxGBZVZOtdjZ5Ld0KRQ8EICk
  34. [sign] => 703320F976477698F35115607F6AA460

  35. 生成xml
  36. 附带参数:xml提交到 https://api.mch.weixin.qq.com/pay/unifiedorder
  37. 记录下日志
  38. 统一下单成功后 3.获取jsapi支付的参数
  39. 支付完成后走回调地址
  40. www.xxx.xx/callback/weixin
  41. 微信JSAPI支付异步回调地址 返回支付信息
  42. 拿到用户openid
  43. 获取通知的数据
  44. 记录生回调的结果
  45. 返回成功则验证签名
  46. 验证信息:商户订单号,微信openID,交易金额,查询订单验证真是性
  47. true回调出来完成不需要继续回调,false回调处理未完成需要继续回调
  48. 完成之后输出xml信息
  49. 修改订单状态完成支付