微信小程序支付的坑

微信小程序支付和APP支付还是不一样的,有几个注意点要说明:

APPID 的不同

小程序支付的APPID 就是小程序的APPID(公众平台),不需要绑定开放平台 APP支付的APPID为开放平台的APPID,这一定需要注意

统一下单的不同

小程序使用的JSAPI方式统一下单,APP使用的是APP方式统一下单,尽管统一下单的接口url一样,但是参数不一样,JSAPI方式必须添加openid参数。

返回前端数据的不同

APP支付返回前端的是orderinfo对象,小程序支付返回的对象五个数据:timeStamp,nonceStr,package,signType paySign 注意大小写 signType 必须是MD5,在做paySign签名的时候,需要6个参数,上述5个参数去掉paySign(不参与签名)加上appId(注意大写I,这是个大坑,这个错了签名必然失败)。package参数必须prepay_id=xxxxx的这种形式

python 参考代码如下:

request_order_info = {'appId': params_dict['appid'],
                          'package': 'prepay_id=' + prepay_id,
                          'signType': params_dict['sign_type'],
                          'nonceStr': generate_nonce_str(),
                          'timeStamp': str(int(time.time()))}
    request_order_info['paySign'] = generate_sign(request_order_info)
    return request_order_info

前端唤起支付的不同

APP 是通过orderInfo唤起支付,小程序需要几个参数:示例代码如下:

vuni.requestPayment({
            provider: 'wxpay',
            orderInfo: '',
            timeStamp: orderInfo.timeStamp,
            nonceStr: orderInfo.nonceStr,
            package: orderInfo.package,
            signType: orderInfo.signType,
            paySign: orderInfo.paySign,
            success: e => {

            },
            fail: e => {

            },
            complete: () => {}
        });

文档信息

版权声明:可自由转载(请注明转载出处)-非商用-非衍生

发表时间:2023年3月10日 20:48