• 微信内网页支付开发手记


    最近项目需要用到微信支付,以前弄过淘宝支付,其实原理都差不多,在此做个笔记,方便以后用到。

    微信支付分几种,而我只用到了微信内网页支付,其他支付过程大同小异。

    官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=7_1

    微信页内支付:用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。

    总体业务流程时序图:

    我们就根据时序图,逐步记录分解说明。

    1、申请微信支付

    申请微信公众号支付,必需满足以下条件:
    1、公众号为服务号,且为企业、媒体、政府及其他组织类型;
    2、已完成微信认证(完成资质认证或名称认证,审核服务费用:300元/次

    认证申请是一个漫长又繁琐的过程~~

    2、填写支付测试授权地址,测试白名单

    3、编写统一下单接口

    官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_1

    除被扫支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。

    注意:

    (1)其中签名算法一定要按照规定,http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=4_3

    (2)文档中提到的APP密匙是在商户系统-》账户设置-》安全设置-》API安全里面获得的密匙,而不是Appsecret(因为这里理解错误,我花了两天困在了签名!)。

       APP密匙:交易过程生成签名的密钥,仅保留在商户系统和微信支付后台,不会在网络中传播。商户妥善保管该Key,切勿在网络中传输,不能在其他客户端中存储,保证key不会被泄漏。商户可根据邮件提示登录微信商户平台进行设置。

    (3)不要泄露任何密匙相关信息,所以所有的签名操作都需要提交给服务器完成,不要在html里面硬编码。

    (4)notify_url是接收微信支付异步通知回调地址,是判断支付是否成功的关键,该URL不能附带任何类似?A=1&B=2的参数,会被过滤掉,参数应该附加在attach附加参数这个字段中。异步通知回调的时候会原封返回,处理完成数据之后,记得返回微信服务器成功信息,不然会定期重传。关于回调的相关文档http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_7

    完成统一下单接口之后,与微信支付交互,就能够得到页内支付的预交易会话标识了。

    4、编写微信页内支付签名接口

    官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=7_7

    由于又要签名一次,签名用到API密匙,所以服务端要提供签名接口,其中的参数可以在服务端生成,也可以由客户端生成。

    根据文档要求,签名完成之后,就调用微信JSAPI直接进入支付流程即可。

    整个过程采用XML数据传输。

  • 相关阅读:
    数据库插入数据返回当前主键ID值方法
    兼容SQLSERVER、Oracle、MYSQL、SQLITE的超级DBHelper
    C# listview 单击列头实现排序 <二>
    C# ListView点击列头进行排序
    MessageBox.Show()的各种用法
    QT 删除文件指定目录
    hihoCoder 1015 KMP算法
    hiho一下 第五十周 (求欧拉路径)
    hdu
    hiho一下 第四十九周 欧拉路
  • 原文地址:https://www.cnblogs.com/leestar54/p/4261256.html
Copyright © 2020-2023  润新知