Lucky_D_Q 2015-08-03 08:04 采纳率: 0%
浏览 5101

微信公众号jsApi支付问题

支付目录:http://testmecom.hhit.com.cn/mecom/micromall/page/wxPrePay.jsp
测试授权目录:http://testmecom.hhit.com.cn/mecom/micromall/page/

统一下单支付请求:

****
****
8fu8Z1206x9Bz5270ioAxdD2L23u066T
54B7F7BA12812F958E97844650543EE2
亲,请仔细核对交易金额,以免失误!
db331NIA2644817U59o3679891F077O2
1
219.136.133.131
http://testmecom.hhit.com.cn/mecom/wxpay!notifyUrl.action
JSAPI
oneDCuL44fxwh-BNB_aC3xIBvnjA
10311106

统一下单返回结果:

<![CDATA[SUCCESS]]>
<![CDATA[OK]]>
<![CDATA[****]]>
<![CDATA[****]]>
<![CDATA[SbGmWWImFwvlh13z]]>
<![CDATA[8C123495A6777C95C24D976762F51CFA]]>
<![CDATA[SUCCESS]]>
<![CDATA[wx201507301403575355b478720900716820]]>
<![CDATA[JSAPI]]>

** h5请求:**

function onBridgeReady(appId, timestamp, nonceStr, packages, signType, paySign) {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": appId, //公众号名称,由商户传入
"timeStamp": timestamp, //时间戳,自1970年以来的秒数
"nonceStr": nonceStr, //随机串
"package": packages,
"signType": signType, //微信签名方式:
"paySign": paySign //微信签名
},
function (res) {
WeixinJSBridge.log(res.err_msg);
alert(res.err_msg); ---->get_brand_wcpay_request:fail
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
window.location.href = "${basePath}/mecom/MmOrderAction!findOrderListPageInfo.action?dataType=unsend"

                        }
                    }
            );
        }

                    问题描述:公众号支付,在客户端使用H5网页端调起支付(jsApi),错误信息:get_brand_wcpay_request:fail,有知道怎么解决这个问题的大神吗?请指教
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 03:35
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能是因为在调用WeixinJSBridge.invoke方法时,参数传递不正确或者签名验证失败导致。以下是可能导致此问题的一些常见原因及解决方案:

    1. 参数格式不正确:在调用WeixinJSBridge.invoke方法时,参数应该按照指定的顺序和格式进行传递。例如,"appId", "timestamp", "nonceStr", "packages", "signType"和"paySign"应该是按顺序传递给函数的。
    WeixinJSBridge.invoke(
        "getBrandWCPayRequest",
        {
            "appId": appId,
            "timeStamp": timestamp,
            "nonceStr": nonceStr,
            "package": packages,
            "signType": signType,
            "paySign": paySign
        },
        function (res) {
            WeixinJSBridge.log(res.err_msg);
            alert(res.err_msg); // 这里将显示错误消息
        }
    )
    
    1. 签名验证失败:在调用WeixinJSBridge.invoke方法之前,应确保已经设置了正确的签名密钥。如果签名密钥无效或过期,则可能会导致签名验证失败。
    var signature = "your_signature"; // 填写你的签名密钥
    WeixinJSBridge.setSignature("your_signature"); // 设置签名密钥
    WeixinJSBridge.invoke(
        "getBrandWCPayRequest",
        {
            "appId": appId,
            "timeStamp": timestamp,
            "nonceStr": nonceStr,
            "package": packages,
            "signType": signType,
            "paySign": paySign
        },
        function (res) {
            WeixinJSBridge.log(res.err_msg);
            alert(res.err_msg); // 此处将显示错误消息
        }
    )
    
    1. 检查签名密钥是否有效:在调用WeixinJSBridge.invoke方法之前,应检查签名密钥的有效性。可以通过以下命令来获取签名密钥的有效期:
    WeixinJSBridge.getSignature有效期();
    

    如果签名密钥已过期,应更新签名密钥并重新设置。

    1. 验证码失效:在调用微信支付接口时,若未通过手机验证码确认支付,也可能导致签名验证失败。

    为了解决这个问题,可以尝试以下步骤:

    • 确保所有的参数都以正确的格式进行传递。
    • 更新签名密钥的有效期。
    • 确认手机验证码是否已输入,并且已正确发送到用户的设备上。
    • 在调用微信支付接口时,确保所有操作都在HTTPS环境下进行,以避免安全威胁。

    希望这些建议能帮助您解决问题。如果您提供更多的上下文信息,我可以进一步帮助您诊断和修复问题。

    评论

报告相同问题?