VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云优惠活动
荫云优惠活动

【记录】PHP微信小程序微信支付v3的使用

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

写小程序发现微信支付有了v3 & # 29256本, 就想着接个新的支付看看, 结果发现,有毒,记录一下历程

先是统一下单

//统一下单公共函数微信添加订单($name,$ ordernumber,$money,$ OpenID){ $ URL = " https://API . mch . weixin . QQ . com/v3/pay/transactions/jsapi ";$ URL arr = parse _ URL($ URL);$ appid = config(' config . appid ');//appID $ MC hid = config(' config . MC hid ');//商户ID $ xlid = config(' config . API XL ');//API & # 24207;列号$ data = array();$randstr = getRanStr(16,false);//随机字符串长度不超过32 $ time = time();$ data[' appid ']= $ appid;$ data[' MC hid ']= $ MC hid;$ data[' description ']= $ name;//商品描述$ data[' out _ trade _ no ']= $ order number;//订单编号$ data[' notify _ URL ']= " https://www . xf fly . cn/API/admin/order/微信回调";//回调接口//$ data[' amount '][' total ']= $ money;//金额$ data[' amount '][' total ']= 1;$ data[' payer '][' OpenID ']= $ OpenID;//用户openID $ data = JSON _ encode($ data);$ key = $ this -& gt;getSign($data,$urlarr['path'],$randstr,$ time);//签名$token = sprintf('mchid="%s ",serial_no="%s ",nonce_str="%s ",timestamp="%d ",signature="%s " ',$mchid,$xlid,$randstr,$time,$ key);//头部信息$header = array( 'Content-Type:'。应用/JSON;charset=UTF-8 ',' Accept:application/json ',' User-Agent:*/* ',Authorization:we chat pay 2-sha 256-RSA 2048 '。$ token);$ret = curl_post_https($url,$data,$ header);返回$ ret}计算签名, 也是按照文档弄了好多遍

//微信支付签名公共函数getSign($data=array(),$url,$randstr,$time){ $str = "POST "。\n。$url。\n。$时间。\n。$randstr。\n。$data。”\ n”;$ key = file _ get _ contents(' API client _ key . PEM ');//在商户平台下载的秘钥$str = getSha256WithRSA($str,$ key);返回$ str}通过统一下单接口得到prepay _ id & # 22312小程序里面用他的wx.requestPayment & # 25509口调起支付,没啥含量,不贴代码了,照着文档写其中调起支付还需要一个签名,同理

//调起支付的签名公共函数getWechartSign($ post){ $ data = array();$data['时间戳'] = $post['时间戳'];$ data[' non centr ']= $ post[' str '];$ data[' package ']= $ post[' package '];$str = config('config.appId ')。\n。$data['时间戳']。\n。$ data[' non centr ']。\n。$data['package']。”\ n”;$ key = file _ get _ contents(' API client _ key . PEM ');$str = getSha256WithRSA($str,$ key);返回$ str}重点是支付成功的回调,简直有毒返回回来的json & # 20449息,json _ decode & # 35299析就成了空, 复制出来再解析是可以解析的,说是他有bom & # 20449息吧, 弄了也不好使, 用htmlspecialchars _ decode & # 36716;义一下, 调试工具可以成功, 可是真实微信支付,还是不行,最后没办法, 存的日志& # 37324;面, 自己再取一下,就可以用了

//微信回调写入日志文件并返回公共函数writeWechartLog($post){ if(!is _ dir(" upload/log "){ mkdir(" upload/log ",0777,true);} $ log = fopen(" upload/log/we chart . txt "," a+");if(is _ array($ post)){ $ post = JSON _ encode($ post);} fwrite($log,post。" \ n ");fclose($ log);$ read = fopen(" upload/log/we chart . txt "," r ");fseek($read,-1,SEEK _ END);$ s =“”;while (($c = fgetc($read))!= = false){ if($ c = = " \ n " & amp;& amp$ s)break;$ s = $ c . $ sfseek($read,-2,SEEK _ CUR);} fclose($ read);返回$ s;//取刚刚存的最后一条回调信息}回调信息里面,有个加密的东西,还得解密一下,这个传入的是自己又从日志& # 37324;面取出来的数据钠_ crypto _ aead _ AES 256 GCM _ decrypt & # 36825;个解密密方法需要php & # 25193展钠

//微信回调解密公共函数wechartDecrypt($ str){ $ str = htmlspecialchars _ decode($ str,ENT _ COMPAT);$post = json_decode($str,true);$ key = config(" config . API v3 key ");//商户平台设置的api v3 & # 23494码$ text = base64 _ decode($ post[' resource ']['密文']);$str =钠_ crypto _ aead _ AES 256 GCM _ decrypt($ text,$ post[' resource '][' associated _ data '],$post['resource']['nonce'],$ key);返回json_decode($str,true);}然后就是取到回调信息后的业务处理了

又看到这个文章的朋友, 如果知道为什么微信回调回来的json & # 20449息, 没办法直接使用的, 麻烦告告我,谢谢啦, 研究一天没研究出来, 只能先这样处理了...

以上是【记录】PHP微信小程序微信支付v3使用的详细内容。更多请关注主机参考其他相关文章!

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:【记录】PHP微信小程序微信支付v3的使用 https://zhujicankao.com/95807.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 【记录】PHP微信小程序微信支付v3的使用
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!