微信小程序> 微信小程序支付后端PHP-微信小程序php后端搭建-小程序php源码

微信小程序支付后端PHP-微信小程序php后端搭建-小程序php源码

浏览量:1279 时间: 来源:UFO00001
1.

看文章扫一扫领红包哦

2.

前端:比较简单,在对应的支付事件上进行网络请求就好:

3.

微信小程序支付后端PHP(二)

view_moneysure:function(){varcodethis.data.code;console.log('code是'+code)wx.request({url:'https://...com/pay.php',//这个链接是后端写的header:{'Content-Type':'application/x-www-form-urlencoded'},data:{code:code,},method:'POST',success:function(response){console.log(response.data);//发起支付wx.requestPayment({'appId':response.data.appId,'timeStamp':response.data.timeStamp,'nonceStr':response.data.nonceStr,'package':response.data.package,'signType':'MD5','paySign':response.data.paySign,'success':function(res){wx.showToast({title:'支付成功'});console.log(res);},'fail':function(res){console.log(res)}});},fail:function(res){console.log(res)}})},后端代码:4.

1.pay.php//小程序请求的后端地址

?php/***CreatedbyPhpStorm.*User:UFO*Date:17/7/18*Time:下午5:31*/require_once('WxPay.Api.php');classWXPay{functionindex(){//初始化值对象$inputnewWxPayUnifiedOrder();//文档提及的参数规范:商家名称-销售商品类目$input-SetBody("testceshi");//订单号应该是由小程序端传给服务端的,在用户下单时即生成,demo中取值是一个生成的时间戳$input-SetOut_trade_no(time().'');//费用应该是由小程序端传给服务端的,在用户下单时告知服务端应付金额,demo中取值是1,即1分钱$input-SetTotal_fee("1");$input-SetNotify_url("https://...com/notify.php");//需要自己写的notify.php$input-SetTrade_type("JSAPI");//由小程序端传给后端或者后端自己获取,写自己获取到的,$input-SetOpenid('UdhncondJcnkJnjknkcssdcAbckn');//$input-SetOpenid($this-getSession()-openid);//向微信统一下单,并返回order,它是一个array数组$orderWxPayApi::unifiedOrder($input);//json化返回给小程序端header("Content-Type:application/json");echo$this-getJsApiParameters($order);}privatefunctiongetJsApiParameters($UnifiedOrderResult){//判断是否统一下单返回了prepay_idif(!array_key_exists("appid",$UnifiedOrderResult)||!array_key_exists("prepay_id",$UnifiedOrderResult)||$UnifiedOrderResult['prepay_id']""){thrownewWxPayException("参数错误");}$jsapinewWxPayJsApiPay();$jsapi-SetAppid($UnifiedOrderResult["appid"]);$timeStamptime();$jsapi-SetTimeStamp("$timeStamp");$jsapi-SetNonceStr(WxPayApi::getNonceStr());$jsapi-SetPackage("prepay_id".$UnifiedOrderResult['prepay_id']);$jsapi-SetSignType("MD5");$jsapi-SetPaySign($jsapi-MakeSign());$parametersjson_encode($jsapi-GetValues());return$parameters;}//这里是服务器端获取openid的函数//privatefunctiongetSession(){//$code$this-input-post('code');//$url'https://api.weixin.qq.com/sns/jscode2session?appid'.WxPayConfig::APPID.'secret'.WxPayConfig::APPSECRET.'js_code'.$code.'grant_typeauthorization_code';//$responsejson_decode(file_get_contents($url));//return$response;//}}$WxPaynewWXPay();$WxPay-index();2.微信SDK下载链接:https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php_v3.zip5.

解压在lib文件夹下可以看到:

6.

放到服务端可访问的目录下。

7.

在WxPayConfig.php里面配置账号信息:

classWxPayConfig{//【基本信息设置】///***TODO:修改这里配置为您自己申请的商户信息*微信公众号信息配置**APPID:绑定支付的APPID(必须配置,开户邮件中可查看)**MCHID:商户号(必须配置,开户邮件中可查看)**KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置)*设置地址:https://pay.weixin.qq.com/index.php/account/api_cert**APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置,登录公众平台,进入开发者中心可设置),*获取地址:https://mp.weixin.qq.com/advanced/advanced?actiondevtadvanced/devtoken2005451881langzh_CN*@varstring*/constAPPID'wx123456789...';//这里填上自己的对应信息constMCHID'14151666888';constKEY'11223344556677889900';constAPPSECRET'828bfsdibfsiubfikdbfik';constNOTIFY_URL'https://...com/notify.php';8.

注:

9.

期间遇到一个签名错误,一直不好,使用微信支付接口签名校验工具校验也没有错,像网上说的漏写错写参数都查了,就是一直返回return_code![CDATA[FAIL]]/return_code

return_msg![CDATA[签名错误]]/return_msg这样的信息,最后解决办法是:重置了KEY(商户支付密钥),重置的和之前的一模一样,但竟然就可以了...10.

问题主要都是报签名错误,仔细检查就好,比如XML格式不对,MD5加密后的位数,字典排序没排好,缺少参数等...

11.

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter9_1index1

12.

3.最后附上notify.php

?php/***CreatedbyPhpStorm.*User:UFO*Date:17/7/13*Time:下午6:42*/require_once('WxPay.Api.php');require_once('WxPay.Notify.php');classPayNotifyCallBackextendsWxPayNotify{//查询订单publicfunctionQueryorder($transaction_id){$inputnewWxPayOrderQuery();$input-SetTransaction_id($transaction_id);$resultWxPayApi::orderQuery($input);if(array_key_exists("return_code",$result)array_key_exists("result_code",$result)$result["return_code"]"SUCCESS"$result["result_code"]"SUCCESS"){returntrue;}returnfalse;}//重写回调处理函数publicfunctionNotifyProcess($data,$msg){$notfiyOutputarray();if(!array_key_exists("transaction_id",$data)){$msg"输入参数不正确";returnfalse;}//查询订单,判断订单真实性if(!$this-Queryorder($data["transaction_id"])){$msg"订单查询失败";returnfalse;}returntrue;}}$notifynewPayNotifyCallBack();$notify-Handle(false);13.

欢迎留言交流指正!

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎