微信小程序支付代码php,微信小程序 支付功能实现PHP实例详解

搜索热词

前端代码:

链接

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)

}

});

后端代码:

import('Weixin.Lib.WeixinPay');

$weixinpay = new \WeixinPay($appid,$openid,$mch_id,$key);

$return=$weixinpay->pay();

$this->response($return,'json');

}

微信支付类

PHP;">

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,mtrand(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,strlen($buff)-1);

}

return $reqPar;

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值