微信公众号支付
- 这个是在微信公众号内操作需要微信用户登录,当然也可以使用h5手机网站来唤起支付宝的
-
使用的是jsapi接口
- 首先获取微信的的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是有过期时间
- o
- 1.获取jsapi接口凭证
- 获取微信jsapi_ticket
- 查询jsapi_ticket + 产品id 7.1. 没有过期直接用数据库里的 7.2. 过期了再去生成access_token 用接受到的access_token获取 GET_JSAPITICKET_URL 7.3. 返回jsapi_ticket
- 这里参数的顺序要按照 key 值 ASCII 码升序排序
- 4.1、jsapi_ticket 是公众号用于调用微信JS接口的临时票据
- 4.2、noncestr 随机串
- 4.3、timestamp 时间戳
- 4.4、url 请求地址
-
4.5、sha1(string) 签名
-
- $signPackage = array(
- “appId” => $appId,
- “nonceStr” => $nonceStr,
- “timestamp” => $timestamp,
- “url” => $url,
- “signature” => 签名,
- “rawString” => $string
-
);
-
注意 URL 一定要动态获取,不能 hardcode.
- 微信公众号支付统一下单
- wx_mch_id 微信支付商户号码
- [appid] => wx004b3b5e159b0d47
- [mch_id] => 1304682801
- [nonce_str] => nolh7jg7c5dhywp8qcb5igs9gboge385
- [body] => 发红包测试
- [out_trade_no] => HLX2018041111074712722900
- [total_fee] => 1
- [spbill_create_ip] => 127.0.0.1
- [notify_url] => http://beta.m.haolexue.cc/callback/weixin
- [trade_type] => JSAPI
- [openid] => ovVALxGBZVZOtdjZ5Ld0KRQ8EICk
-
[sign] => 703320F976477698F35115607F6AA460
- 生成xml
- 附带参数:xml提交到 https://api.mch.weixin.qq.com/pay/unifiedorder
- 记录下日志
- 统一下单成功后 3.获取jsapi支付的参数
- 支付完成后走回调地址
- www.xxx.xx/callback/weixin
- 微信JSAPI支付异步回调地址 返回支付信息
- 拿到用户openid
- 获取通知的数据
- 记录生回调的结果
- 返回成功则验证签名
- 验证信息:商户订单号,微信openID,交易金额,查询订单验证真是性
- true回调出来完成不需要继续回调,false回调处理未完成需要继续回调
- 完成之后输出xml信息
- 修改订单状态完成支付
本文由 MeiLe 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:2017-05-23 22:06:42