php公众号支付后的微信通知,关于微信公众号支付细数我踩过的坑

微信公众号支付流程

项目背景:

1、前后端分离,前端是jquery 获取后端接口 (php)

开发流程:

1、配置

进入微信公众平台,申请开通微信支付,不开通就别进行下一步了。开通后,进入左侧的微信支付,点击开发配置,公众号支付授权目录,一般为H5页面的上一级目录。记得写‘/’

2、前端js 使用微信接口获取code

具体接口:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect (静默授权,用户感知不到)

REDIRECT_URI 为当前页面  这个页面要做打开页面的操作,真正的打开,不是请求参数,不然坑死你没商量。微信服务器会302调回到REDIRECT_URI 传来的页面,后面会附带参数code和state  ,成功获取。

3、前端将获取的code发送给后端,getOpenId()  主要实现的功能为通过code换取网页授权access_token 和需要付款时调起很关键的openId

public function getOpenId(){

//$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code ';

$code = I('param.code');

if(empty($code)){

die;

}

$appId = 'wx1234123412341234';

$secret = '3434212331234123235345';

$s = 'CODE';

$result = file_get_contents('https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appId.'&secret='.$secret.'&code='.$code.'&grant_type=authorization_code');

后端代替前端获取openId会比较安全,因为涉及到secret,不应该在前端存储。

4.下面开始正式预订单 前端传递参数 后端来处理

前端传递一些必要的订单号,金额等,后端获取 注意大小写,原生php的项目使用官方的demo挺合适的。不然使用一些网上分享的类来做也可以。这一块的文章太多了,只要按照文章来做,一定可以获取到prepay_id 的

if ($wx_result['return_code'] === 'SUCCESS' && $wx_result['return_msg'] === 'OK' && $wx_result['result_code'] === 'SUCCESS' )

都正常那就开始业务逻辑,生成订单等等

5,二次签名

//二次签名

$sign_array = array();

$sign_array['appId'] = $wx_result['appid'];

$sign_array['nonceStr'] = $wx_result['nonce_str'];

$sign_array['package'] = 'prepay_id='.$wx_result['prepay_id'];

$sign_array['signType'] = 'MD5';

$sign_array['timeStamp'] = time();

这块注意下大小写,$wx_result数组是第四步传来的。 挑选有用的来加密,实现调起微信公众号支付。

6、前端获取 返回的json数据,调起

8cae07349fa67cb09d1890613149ecc3.png

01003727a7b192311dfa7809b578e033.png jsApiCall() 括号内一定要加上data!!!!!!!!弄了三天,你懂得。

7、支付成功后,微信会通知服务器,开始后台逻辑xxxx

其实没有那么多的坑,微信的文档仔细看仔细看仔细看

差不多就这样了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值