cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Pembayaran WeChat: H5 memanggil API pembayaran dan terus mengatakan bahawa pembayaran gagal

  1. Saya menggunakan java untuk membangunkan fungsi pembayaran akaun rasmi WeChat, menggunakan fungsi pembayaran dalaman akaun rasmi

Dalam langkah pertama, antara muka pesanan bersatu telah dilaraskan, dan prabayar_id boleh diperolehi (kod akan disiarkan di bawah, bagaimanapun, apabila menghubungi API pembayaran melalui JS, pemulangan langsung adalah kegagalan, dan halaman). tidak memanggil WeChat Tetingkap pembayaran berkelip, Malah, kawalan pembayaran tidak dilaraskan sama sekali, dan saya tidak tahu apa yang salah saya hanya boleh menghubunginya pada telefon bimbit saya untuk melihatnya, dan saya tidak boleh menjalankan siasatan susulan Data daripada amaran adalah kegagalan langsung Kod JS adalah seperti berikut

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();
}

Saya harap anda semua dapat melihat apa masalahnya Jika spesifiknya tidak diterangkan dengan jelas, sila nyatakan dan saya akan menerangkan atau menyiarkan kod tersebut

Tambahan: Direktori kebenaran pembayaran yang dikonfigurasikan dan laluan ke halaman pembayaran adalah konsisten Ini telah disahkan dengan teliti dan tiada masalah!

巴扎黑巴扎黑2781 hari yang lalu865

membalas semua(4)saya akan balas

  • 为情所困

    为情所困2017-05-17 10:06:16

    Sayang, adakah URL kebenaran pembayaran WeChat anda dikonfigurasikan dengan betul? Selain itu, http dan https mesti sepadan dengan ketat

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-17 10:06:16

    Adakah pesanan Tune-in dibuat dengan jayanya? Jika berjaya, semak untuk melihat sama ada tandatangan itu betul, kemudian semak konfigurasi direktori pembayaran. Apakah gesaan khusus yang dikembalikan oleh WeChat?

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-05-17 10:06:16

    Dalam kes ini, sama ada tandatangan salah atau laluan pembayaran salah.
    Sekiranya gagal, taipkan keseluruhan res, dan WeChat akan mengembalikan maklumat lain, bukan hanya err_msg

    Adakah parameter pakej anda salah? Nilai parameter ialah prepay_id=xxx

    balas
    0
  • 高洛峰

    高洛峰2017-05-17 10:06:16

    cap masa: 0, // Cap masa tandatangan pembayaran Ambil perhatian bahawa semua medan cap masa yang digunakan dalam WeChat jssdk adalah huruf kecil. Walau bagaimanapun, nama medan TimeStamp yang digunakan oleh versi terkini latar belakang pembayaran untuk menjana tandatangan perlu menggunakan huruf besar S

    Saya tidak tahu sama ada ia berlaku di ladang?

    balas
    0
  • Batalbalas