欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付

发布时间:2023/12/14 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

PS:在上一篇文章中,通过对主体上传xml数据进行签名获取到了微信返回的数据,将返回的xml数据中的prepay_id提取出来后就可以进行下一步: 对prepay_id以及其他所需参数进行在此签名并将数据返回小程序端
PHP代码:

$timeStamp = time(); $postData = array( //再次签名的主体内容'appId' => 'appId=此处写你的appid','nonceStr' => 'nonceStr=' . $nonce_str,'package' => 'package=prepay_id=' . $prepay_id,'signType' => 'signType=MD5','timeStamp' => 'timeStamp=' . $timeStamp,'key' => 'key=此处写你的APIv2key', );$disposeData = implode('&', $postData); //将签名主体内容由数组转化为字符串 $getPaySign = MD5($disposeData); //使用MD5进行签名 $paySign = strtoupper($getPaySign); $payBody = array( //返回给小程序的内容'timeStamp' => (string)$timeStamp,'nonceStr' => $nonce_str,'package' => 'prepay_id='.$prepay_id,'signType' => 'MD5','paySign' => $paySign, ); $getpreData = json_encode($payBody); echo $getpreData;

PS:上方PHP代码中需要注意的是:进行再签名的数据中,appId中的I是大写,在上一篇文章中的appid是小写,在此签名中的nonce_str与上一篇中获取prepay_id所需要的nonce_str是同一个变量,不需要再次生成第二个32位随机字符串,参与签名的时间戳与返回给微信的时间戳做好保持相同

小程序端JS代码:

getxml(){var test = thiswx.getStorage({ //此处openid是从缓存中获取,我在app.js中获取openid,并将其存入本地缓存之中key:'openid',success(res){console.log(res)test.setData({'openid':res.data})console.log(test.data.openid)}})wx.request({url: 'http://192.168.0.103:2908/wxPayV2/getPrepay_id.php', //此处改为你的PHP文件地址method:'POST',header:{'content-type':'application/x-www-form-urlencoded'},data:{'openid':test.data.openid,'description':'0.38mm.pen', //商品描述,这里我写死了,方便后期测试用的,注意修改'total':1 //总费用,单位为分,实际使用请乘100使其变为元},success(res){console.log(res)// test.setData({ //这一段内容看情况可以舍弃// 'nonceStr':res.data.nonceStr,// 'package':res.data.package,// 'paySign': res.data.paySign,// 'timeStamp': res.data.timeStamp// })wx.requestPayment({nonceStr: res.data.nonceStr,package: res.data.package,paySign: res.data.paySign,timeStamp: res.data.timeStamp,signType: res.data.signType,success(res){console.log(res)}})}})},

以上就是如何在小程序端拉起微信支付收银台,总体来看,完成微信支付v2 JSAPI支付,总计需要两次签名,可以选择使用MD5与HMAC-SHA256进行签名,注意appid参数的大小写,注意两次签名中生成的nonce_str要相同,参与签名的时间戳参数也要与返回小程序端的时间戳保持相同


本文原创为CSDN用户:缱绻淡蓝海

总结

以上是生活随笔为你收集整理的PHP获取微信支付v2预支付参数prepay_id后在小程序端完成支付的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。