Maison  >  Questions et réponses  >  le corps du texte

javascript - Paiement WeChat : H5 appelle l'API de paiement et indique directement que le paiement a échoué

  1. J'utilise Java pour développer la fonction de paiement du compte officiel de WeChat, en utilisant la fonction de paiement interne du compte officiel

Dans la première étape, l'interface de commande unifiée a été ajustée et prepay_id peut être obtenu (le code sera publié ci-dessous. Cependant, lors de l'appel de l'API de paiement via JS, le retour direct est un échec, et la page). n'appelle pas WeChat La fenêtre de paiement clignote, En fait, le contrôle des paiements n'a pas été ajusté du tout, et je ne sais pas ce qui n'a pas fonctionné, je ne peux l'appeler que sur mon téléphone portable pour le voir, et je ne peux pas. mener des enquêtes de suivi. Les données de l'alerte sont un échec direct Le JS spécifique Le code est le suivant

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

J'espère que vous comprendrez quel est le problème. Si les détails ne sont pas clairement décrits, veuillez le signaler et je vous expliquerai ou publierai le code

Supplément : Le répertoire d'autorisation de paiement configuré et le chemin d'accès à la page de paiement sont cohérents. Cela a été soigneusement confirmé et il n'y a aucun problème !

巴扎黑巴扎黑2686 Il y a quelques jours736

répondre à tous(4)je répondrai

  • 为情所困

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

    Cher client, votre URL d'autorisation de paiement WeChat est-elle correctement configurée ? De plus, http et https doivent correspondre strictement

    répondre
    0
  • 曾经蜡笔没有小新

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

    La commande de mise au point a-t-elle été passée avec succès ? En cas de succès, vérifiez si la signature est correcte, puis vérifiez la configuration du répertoire de paiement. Quelles sont les invites spécifiques renvoyées par WeChat ?

    répondre
    0
  • phpcn_u1582

    phpcn_u15822017-05-17 10:06:16

    Dans ce cas, soit la signature est erronée, soit le mode de paiement est erroné.
    En cas d'échec, tapez la résolution entière et WeChat renverra d'autres informations, pas seulement err_msg

    Le paramètre de votre package est-il erroné ? La valeur du paramètre est prepay_id=xxx

    répondre
    0
  • 高洛峰

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

    timestamp : 0, // Horodatage de la signature de paiement Notez que tous les champs d'horodatage utilisés dans WeChat jssdk sont en minuscules. Cependant, le nom du champ timeStamp utilisé par la dernière version de l'arrière-plan de paiement pour générer des signatures doit mettre en majuscule le caractère S

    Je ne sais pas si c’est le cas des champs ?

    répondre
    0
  • Annulerrépondre