微信小程序用PHP实现支付功能
这篇文章主要介绍了微信小程序 支付功能实现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实现支付功能的详细内容,更多请关注小潘博客其它相关文章!