javascript - WeChat-Zahlung: H5 ruft die Zahlungs-API auf und sagt direkt, dass die Zahlung fehlgeschlagen ist
巴扎黑
巴扎黑 2017-05-17 10:04:16
0
4
731
  1. Ich verwende Java, um die Zahlungsfunktion für das offizielle Konto von WeChat zu entwickeln, und nutze dabei die interne Zahlungsfunktion des offiziellen Kontos

Im ersten Schritt wurde die einheitliche Bestellschnittstelle angepasst und die prepay_id kann abgerufen werden (der Code wird unten veröffentlicht). Beim Aufruf der Zahlungs-API über JS ist jedoch „die direkte Rückgabe fehlgeschlagen“ und die Seite ruft WeChat nicht an. Das Zahlungsfenster blinkt. Tatsächlich wurde die Zahlungskontrolle überhaupt nicht angepasst. Ich weiß nicht, was schief gelaufen ist. Ich kann es nur auf meinem Mobiltelefon aufrufen, um es anzuzeigen, und ich kann es nicht Führen Sie Folgeuntersuchungen durch. Die Daten aus der Warnung sind ein direkter Fehler. Der spezifische JS-Code lautet wie folgt

function onBridgeReady(){
    
    var param = {};
    param.openid = openid;
    param.orderAmount = 11;
    param.stageid = 2007;
    
    console.log(param);
    
    //通过下面接口获取统一下单接口参数
    var url = puburl + "/wxpay/createOrderinfo";
    var data = ajaxUtil.ajaxJson(url, JSON.stringify(param));
    console.log(data);
    if(data.code != 0) {
        console.log(data);
        return false;
    }
    
    var result = data.data;
    alert(JSON.stringify(result));
    
    //上面接口已经获取接口需要的数据,
    //根据微信官方提供的demo就是通过下面方式进行参数赋值
    WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId":result.appId,
           "timeStamp":result.timeStamp,
           "nonceStr":result.nonceStr,
           "package":result.prepay_id,     
           "signType":result.signType,     
           "paySign":result.paySign
        }, function(res){
               
               //可是程序走到这一步
               //打印出 res.err_msg的结果直接就是:get_brand_wcpay_request:fail
               //只能在手机上调试,无法查看具体错误原因
               alert(res.err_msg);
            // 使用以上方式判断前端返回,
            //微信团队郑重提示:res.err_msg将在用户支付成功后返回ok,
            //但并不保证它绝对可靠。
            if(res.err_msg == "get_brand_wcpay_request:ok" ) {
                alert("支付成功!")
            } else if(res.err_msg == "get_brand_wcpay_request:cancel") {
                alert("支付取消!");
            } else if(res.err_msg == "get_brand_wcpay_request:fail") {
                alert("支付失败!");
            }
        }
    );
}

if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}
Ich hoffe, ihr könnt erkennen, wo das Problem liegt, bitte weist es darauf hin und ich werde es erklären oder den Code veröffentlichen

Ergänzung: Das konfigurierte Zahlungsautorisierungsverzeichnis und der Pfad zur Zahlungsseite sind konsistent. Dies wurde sorgfältig überprüft und es liegen keine Probleme vor!

巴扎黑
巴扎黑

Antworte allen(4)
为情所困

亲,你的微信支付授权URL配置的是否正确?另外,http和https一定要严格匹配哟

曾经蜡笔没有小新

调统一下单成功吗?要是成功的话,看看签名对不对,再看看支付目录配置。微信返回的提示具体是什么?

phpcn_u1582

这种情况下,不是签名错误,就是支付路径不对。
在失败时,把整个 res 打出来,微信返回有其他信息的,不仅仅有err_msg

你的package参数是不是不对,参数值是prepay_id=xxx

小葫芦

timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符

不知道是不是字段大小写原因?

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!