|
原创:
微信操你大爷,流程反锁不说,还处处是坑
首先你申请了微信支付,利用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("支付失败!");
-
- }
- }
- );
- }
复制代码
|
|