这两天和工程师攻克了一个看起来很简单,但花了两周时间的小问题,不多说,总结一下:

 

 

环境:

框架:TP3.2

支付:通联支付

————————————测试———————————————————–

1、必须在手机微信测试

2、去参数刷新也是吊不起支付

3、调试工具测试支付也是吊不起支付

调试工具测试会出如下错误:

————————————支付目录配置———————————————————————–

支付目录需要配置最后/

https://xxx.com/Active/Certificate/

如:有带参,需配置到参数后面

https://xxx.com/Active/Certificate/certificate_detail/id/2

需配置:

https://xxx.com/Active/Certificate/certificate_detail/id/

————————————————-PHP——————————————————-

public function pay($price,$openid){

       $str = “urj28fhjkhkqwcuiasdlklkvbnmzvmnbxcvsjkdafhasjkdhfqwiouyerwqioeufskahdfjkasdhfwqiouerhfjkashfjkdashfuiweyrkjhakjncaskdl”;

       $randomstr = substr($str,rand(0,strlen($str)-6),5).substr($str,rand(0,strlen($str)-6),5).substr($str,rand(0,strlen($str)-11),10);

       $dingdanhao=date(“YmdHis”.rand(9));

       $params = array();

   $params[“cusid”] = AppConfig::CUSID;

    $params[“appid”] = AppConfig::APPID;

    $params[“version”] = AppConfig::APIVERSION;

    $params[“trxamt”] =$price*100;  //交易金额 //单位为分

    $params[“reqsn”] = $dingdanhao;//订单号,自行生成//商户的交易订单号//保证商户平台唯一

    $params[“paytype”] = “W02”;  //交易方式//W05:微信H5,W06小程序//A05:支付宝H5//暂只支持微信H5

    $params[“randomstr”] = $randomstr;//随机字符串//随机生成的字符串

    $params[“body”] = “XXXX; //商品名称//订单标题//订单商品名称,为空则以商户名作为商品名称

    $params[“remark”] = 备注信息; //备注信息

    $params[“acct”] = $openid;    //关联微信公众号openid,应是用户的openID//支付平台用户标识

    //$params[“limit_pay”] = “”; //支付限制//no_credit–指定不能使用信用卡支付

       $params[“notify_url”] = C(‘HOST’).“/Tonglian_h5/notify/notify”;  //交易结果通知地址//接收异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。

    $params[“sign”] = AppUtil::SignArray($params,AppConfig::APPKEY);//签名

    $paramsStr = AppUtil::ToUrlParams($params);

    $url = AppConfig::APIURL . “/pay”;

    $rsp = $this->request($url, $paramsStr);

    $rspArray = json_decode($rsp, true);

       return $rspArray;

}

——————————————–js———————————————————————–

    function buyCertificate() {

        $.ajax({

            url: ‘/active/certificate/buyCertificate’,

            type: ‘post’,

            enctype:“multipart/form-data”,

            data: {

            },

            error:function(jqXHR,textStatus,errorThrown){

                // console.log(jqXHR);

                // console.log(textStatus);

                // console.log(errorThrown);

            },

            dataType: ‘json’,

            success: function(data) {

                if (data.code==100){

                    window.location.href=“/active/member/register”;

                }else if(data.code==200){

                    console.log(data.pay);

                    var payinfo=data.pay.payinfo;

                    var payinfo2= JSON.parse(payinfo);

                    callpay(payinfo2);

                }

            }

        });

    }

//调用微信JS api 支付

function jsApiCall(data)

{

    WeixinJSBridge.invoke(

        ‘getBrandWCPayRequest’,

        {

            “appId”:data.appId,     //公众号名称,由商户传入

            “timeStamp”:data.timeStamp,         //时间戳,自1970年以来的秒数

            “nonceStr”:data.nonceStr, //随机串

            “package”:data.package,

            “signType”:data.signType,         //微信签名方式:

            “paySign”:data.paySign //微信签名

        },

        function(res){

            WeixinJSBridge.log(res);

            if(res.err_msg == “get_brand_wcpay_request:ok”){

                alert(支付成功!);

            }else{

                alert(支付失败!);

            }

        }

    );

}

function callpay(data)

{

    if (typeof WeixinJSBridge == “undefined”){

        if( document.addEventListener ){

            document.addEventListener(‘WeixinJSBridgeReady’, jsApiCall, false);

        }else if (document.attachEvent){

            document.attachEvent(‘WeixinJSBridgeReady’, jsApiCall);

            document.attachEvent(‘onWeixinJSBridgeReady’, jsApiCall);

        }

    }else{

        jsApiCall(data);

    }

}


版权声明:本文为jary4pm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/jary4pm/article/details/81907717