【微信开发】原生PHP的微信Jsapi支付的整体思路!

今天来好好整理一下微信的公众号支付吧!

1.一个已经开通的微信支付功能的公众号(每个月300大洋!!)

2.商户号和商户的api密钥

3.还有证书(做退款时用到)

以上的要准备的东西如下:

Appid(微信公众号的)

AppSecret(微信公众号的 用于获取openid 静默授权)

mch_id(商户号平台的id)

api密钥(商户号自定义的api密钥)

退款证书(商户号生成的证书 退款用到)

以上我不说前端页面了 直说后端要做的事情!

1.统一下单(文档如下)

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

要准备的参数在文档中有详细介绍(其中签名生成等)

可以日志调试查看xml数据

下单成功后

2.调起内置的h5支付(文档如下 必须完成统一下单才可以 )

微信商户平台->产品中心->开发配置->支付目录->网站名称(www.ok.com)

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

其中统一下单会返回一个prepay_id

这个是内置h5支付的关键 然后这次的paysign也是重新生成的 而不是使用下单返回的

这一步我只能说(注意拼接)

微信文档真的很坑!!!!

以上成功后就可以调起起来支付了

3.异步回调查询订单状态

这里是你在统一下单的一个回调地址 方法写在项目中即可

异步回调思路:

你在下单时会有一个订单生成在数据库

此时只是调起支付 但是你的支付status为0 (也就是未支付)

支付成功后微信会主动访问你的回调地址

而你只需要在回调地址中写好修改状态为1(已支付)的sql即可!

(其中使用订单号查找此次数据库的唯一订单)

退款

退款也是请求curl而已 只不过这次请求会附带商户平台的两个证书
需要的参数 文档都有说明 其中需要附加 退款回调url(与支付回调一样)
退款回调主要是为了安全啦 也是接受

退款回调 比较复杂的是微信官方返回的是加密的数据

我们需要解密才能进行完成回调 其中的 transaction_id 在支付成功回调时将此值存到order表中

退款时将它拿出来与退款解密后的 transaction_id 做对比 再修改状态

为您推荐

评论已关闭