美文网首页
微信H5支付开发日志

微信H5支付开发日志

作者: 2fx0one | 来源:发表于2018-04-02 20:56 被阅读0次

本文写于 2018-03-28

1. 参考微信官方流程

参考:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4

2. 准备资源

  • 注册申请(略)成功后可以拿到和设置的信息。
    你需要准备的东西:(4样!)
  1. 公众账号ID (Appid)

  2. 公众号商户号 (mch_id)

  3. apisign key API密钥 (签名时要用!)
    设置路径:微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置。

    API密钥.png
    我用md5命令生成:
    echo -n "mySignKey" | md5
  4. H5 支付域名(只需要配置顶级域名)
    产品中心->我的产品->H5支付->开发配置->支付配置->H5支付域名


    H5支付域名.png

3. 开发流程

流程有点多。其实总结起来就是一句话。用户点击你提供的链接,把钱给微信,微信异步通知公众号(你),公众号(你)接到通知处理后给用户反馈。

简单流程.png

注意,这里涉及三个角色。

  • 用户
  • 微信支付平台
  • 公众号开发人员(你!)


你的开发任务就在于这样一个场景:
用户已经在微信旁边等你的页面了,微信也等着你发下单请求。

你(公众号)的开发细节总览:

  1. 提供页面给用户点击支付。
    地址如下: http://pay.yourdomain.com/order/pay?userId=9527

  2. 用户点击之后,你的后台要生成一个预支付的的订单,发给微信统一下单API。
    参考统一下单:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_20&index=1
    预支付订单格式如下:

<xml>
<appid>wx2421b1c4370ec43b</appid>
<attach>附加数据</attach>
<body>H5支付测试</body>
<mch_id>10000100</mch_id>
<nonce_str>1add1a30ac87aa2db72f57a2375d8fec</nonce_str>
<notify_url>http://wxpay.wxutil.com/pub_v2/pay/notify.v2.php</notify_url>
<openid>oUpF8uMuAJO_M2pxb1Q9zNjWeS6o</openid>
<spbill_create_ip>14.23.150.211</spbill_create_ip>
<total_fee>1</total_fee>
<trade_type>MWEB</trade_type>
<scene_info>{"h5_info": {"type":"IOS","app_name": "王者荣耀","package_name": "com.tencent.tmgp.sgame"}}</scene_info>
<sign>0CB01533B8C1EF103065174F50BCA001</sign>
</xml>

这里需要注意的是:
2.1 scene_info 中的wap_url 域名必须和上文中准备的H5支付域名匹配。(否则报错: 商家存在未配置的参数,请联系商家解决)
2.2 sgin 签名是计算出来的。用的是上文准备好的API密钥。计算错误是无法下单成功的。(参考这里https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=4_3
2.3 spbill_create_ip的ip要正确的获取。(否则报错:网络环境未能通过安全验证,请稍后再试)
2.4 通知地址要设置一个能访问且能处理的地址,用来处理微信回调。(要不然你怎么知道充值成功了呢!)

  1. 微信通过验证后会给你一个包含支付地址信息给你
    支付地址格式如下:
<xml>
   <return_code><![CDATA[SUCCESS]]></return_code>
   <return_msg><![CDATA[OK]]></return_msg>
   <appid><![CDATA[wx2421b1c4370ec43b]]></appid>
   <mch_id><![CDATA[10000100]]></mch_id>
   <nonce_str><![CDATA[IITRi8Iabbblz1Jc]]></nonce_str>
   <sign><![CDATA[7921E432F65EB8ED0CE9755F0E86D72F]]></sign>
   <result_code><![CDATA[SUCCESS]]></result_code>
   <prepay_id><![CDATA[wx201411101639507cbf6ffd8b0779950874]]></prepay_id>
   <trade_type><![CDATA[MWEB]]></trade_type>
   <mweb_url><![CDATA[https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2016121516420242444321ca0631331346&package=1405458241]]></mweb_url>
</xml>
  1. 你的后台会接收支付信息,把"mweb_url"对应的地址发给用户,用户点击之后直接跳转到微信。
    用户点击 mweb_url 对应的地址,就能跳转微信。

  2. 用户进入微信,输入支付密码。支付成功。微信会通知公众号(你)。
    也就是步骤2中你配置的notify_url。接收到的是一个XML。

  3. 你拿到通知。最好应该再去微信查询这个订单。验证订单的真伪。
    参考查询订单:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=9_2&index=2
    也是要用API秘钥签名的。基本没啥难度了。

  4. 如果订单是真的,表示钱到账了,准备发货给用户吧。

9.流程结束。

PS:
1.隐去很多小细节。坑算是比较少的,跟着错误提示来调试即可。
2.只是记录。写的不完整。

代码参考:
GitHub: (后面再补!)

相关文章

网友评论

      本文标题:微信H5支付开发日志

      本文链接:https://www.haomeiwen.com/subject/zlxfhftx.html