微信小程序用PHP实现支付功能

互联网 18-6-23
这篇文章主要介绍了微信小程序 支付功能实现PHP实例详解的相关资料,需要的朋友可以参考下

微信小程序 支付功能实现PHP实例详解

前端代码:

  wx.request({     url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee',//改成你自己的链接     header: {       'Content-Type': 'application/x-www-form-urlencoded'     },     method:'POST',     success: function(res) {       console.log(res.data);       console.log('调起支付');       wx.requestPayment({         'timeStamp': res.data.timeStamp,         'nonceStr': res.data.nonceStr,         'package': res.data.package,         'signType': 'MD5',         'paySign': res.data.paySign,         'success':function(res){           console.log('success');           wx.showToast({             title: '支付成功',             icon: 'success',             duration: 3000           });         },         'fail':function(res){           console.log('fail');         },         'complete':function(res){           console.log('complete');         }       });     },     fail:function(res){       console.log(res.data)     }   });

后端代码:

//支付费用  public function payJoinfee(){  $appid='wx888888888';  $openid='oCQwY0Q_pzrQpu8888888';  $mch_id='141388888';  $key='9A0A86888888888';    import('Weixin.Lib.WeixinPay');  $weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);  $return=$weixinpay->pay();   $this->response($return,'json');  }

微信支付类

<?php /*  * 小程序微信支付  */ class WeixinPay{  protected $appid;  protected $mch_id;  protected $key;  protected $openid;  function __construct($appid,$openid,$mch_id,$key){  $this->appid=$appid;  $this->openid=$openid;  $this->mch_id=$mch_id;  $this->key=$key;  }   public function pay(){  //统一下单接口  $return=$this->weixinapp();  return $return;  }  //统一下单接口  private function unifiedorder(){  $url='https://api.mch.weixin.qq.com/pay/unifiedorder';  $parameters=array(   'appid'=>$this->appid,//小程序ID   'mch_id'=>$this->mch_id,//商户号   'nonce_str'=>$this->createNoncestr(),//随机字符串   'body'=>'测试',//商品描述   'out_trade_no'=>'2015450806125346',//商户订单号   'total_fee'=>floatval(0.01*100),//总金额 单位 分   'spbill_create_ip'=>$_SERVER['REMOTE_ADDR'],//终端IP   'notify_url'=>'http://www.weixin.qq.com/wxpay/pay.php',//通知地址   'openid'=>$this->openid,//用户id   'trade_type'=>'JSAPI'//交易类型  );  //统一下单签名  $parameters['sign']=$this->getSign($parameters);  $xmlData=arrayToXml($parameters);    $return=xmlToArray(postXmlSSLCurl($xmlData,$url,60));    return $return;  }  //微信小程序接口  private function weixinapp(){  //统一下单接口  $unifiedorder=$this->unifiedorder();    $parameters=array(   'appId'=>$this->appid,//小程序ID   'timeStamp'=>''.time().'',//时间戳   'nonceStr'=>$this->createNoncestr(),//随机串   'package'=>'prepay_id='.$unifiedorder['prepay_id'],//数据包   'signType'=>'MD5'//签名方式  );  //签名  $parameters['paySign']=$this->getSign($parameters);    return $parameters;  }  //作用:产生随机字符串,不长于32位  private function createNoncestr($length = 32 ){  $chars = "abcdefghijklmnopqrstuvwxyz0123456789";   $str ="";  for ( $i = 0; $i < $length; $i++ ) {    $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);   }   return $str;  }  //作用:生成签名  private function getSign($Obj){  foreach ($Obj as $k => $v){   $Parameters[$k] = $v;  }  //签名步骤一:按字典序排序参数  ksort($Parameters);  $String = $this->formatBizQueryParaMap($Parameters, false);  //签名步骤二:在string后加入KEY  $String = $String."&key=".$this->key;  //签名步骤三:MD5加密  $String = md5($String);  //签名步骤四:所有字符转为大写  $result_ = strtoupper($String);  return $result_;  }  ///作用:格式化参数,签名过程需要使用  private function formatBizQueryParaMap($paraMap, $urlencode){  $buff = "";  ksort($paraMap);  foreach ($paraMap as $k => $v){    if($urlencode)    {    $v = urlencode($v);   }   $buff .= $k . "=" . $v . "&";  }  $reqPar;  if (strlen($buff) > 0){   $reqPar = substr($buff, 0, strlen($buff)-1);  }  return $reqPar;  } }

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于微信小程序的登陆流程

关于微信小程序的商城开发(ecshop )

微信小程序中购物车的简单实例

以上就是微信小程序用PHP实现支付功能的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: PHP
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:关于微信小程序的登陆流程

相关资讯