免费PHP万能建站系统_社区团购SaaS_商城系统_软件开发_虚拟币交易所系统_矿机系统_微信钻石投票系统_成品源码
标题:
微信JS动态支付,自定义金额支付教程(微信那些坑)
[打印本页]
作者:
admin
时间:
2019-9-13 14:38
标题:
微信JS动态支付,自定义金额支付教程(微信那些坑)
原创:
微信操你大爷,流程反锁不说,还处处是坑
首先你申请了微信支付,利用JSAPI来实现动态支付。 什么是动态支付,例如:用户自定义输入付款金额或指定的付款金额。
案例交话费金额为 50 100 200等
微信的SDK给的代码 金额这一块是写死的。PHP和JS都在一个文件中。那么我们要做的是 把PHP和JS分开
一,JS为前端调用微信支付
二,PHP来处理微信验证,如 OPENID等
这里需要二开微信的几个文件,1.jspai.php 2. WxPay.JsApiPay.php 3. WxPay.Config.php
别忘了 WxPay.Config.php 配置好你的商户信息,如果配置错误 调试起来 就会很烦麻
jspai.php 只保留 PHP的代码。。其它都删掉。
我说一下我实现的思路吧 1.前端支付页面直接获取openid -> 把openid传给jspai.php -> jspai.php把openid给WxPay.JsApiPay.php处理->jspai.php返回前端处理结果
所以,前端支付页面直接获取openid (WxPay.JsApiPay.php 不用他这个文件获取了)
代码如下:
$.post("weixinjspay/jsapi.php",{a:a,b:b,c:c,d:d,k:k},function(result){
if(result == 'no'){
alert("参数出错!");
return false;
}else{
var jsstr = $.parseJSON(result);
jsApiCall(jsstr);
}
},'json');
复制代码
jspai.php 得到POST来的 openid后 传给WxPay.JsApiPay.php 代码如下:
//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid($_POST['key']);
复制代码
echo json_encode($jsApiParameters);
复制代码
修改WxPay.JsApiPay.php 2处:
public function GetOpenid($diyid = '')
{
//获取code码,以获取openid
$code = $diyid;
$openid = $this->getOpenidFromMp($code);
return $openid;
}
复制代码
public function GetOpenidFromMp($code)
{
return $code;
}
复制代码
前端处理:
function jsApiCall(result)
{
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
{
"appId": result.appId,
"nonceStr": result.nonceStr,
"package": result.package,
"paySign": result.paySign,
"signType": result.signType,
"timeStamp": result.timeStamp
},
function(res){
WeixinJSBridge.log(res.err_msg);
/*alert(res.err_code+res.err_desc+res.err_msg);*/
if(res.err_msg == "get_brand_wcpay_request:ok"){
/*支付成功*/
}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
/*用户取消*/
alert("用户取消!");
}else{
/*支付失败*/
alert("支付失败!");
}
}
);
}
复制代码
欢迎光临 免费PHP万能建站系统_社区团购SaaS_商城系统_软件开发_虚拟币交易所系统_矿机系统_微信钻石投票系统_成品源码 (https://ourphp.net/club/)
Powered by Discuz! X3.2