uniapp-微信ウィジェット支払い二次署名エラー解決

2304 ワード

背景


私たちはuniappでapp支払いを開発しましたが、今回は微信ウィジェットにアクセスして支払います.Uniappの利点は,フロントエンドとバックエンドのコードがほとんど調整されず,ドキュメントに基づいて個別のパラメータを調整するだけでよいことである.

に質問


第1歩統一注文のインタフェースは調整されておらず、第2部はウィジェットの再署名ルールに基づいて作成された後、支払い時報を呼び起こす「支払い署名エラー」を発見し、公式文書と大量に照合した結果、問題ないことが分かった.
	uni.requestPayment({
						provider: "wxpay",
						nonceStr: e.nonceStr,
						timeStamp:e.timeStamp,
						package:e.package,
						signType:'MD5',
						paySign: e.paySign,			
						"appId": "wxb0e02258c4ceb6ce",						     		
						success() {
							_this.$at.toast(' ')
							  console.log('success:' + JSON.stringify(e));
						},
						fail(e) {
							  console.log('fail:' + JSON.stringify(e));
							if (e.errMsg.search(" ") > -1) {
								_this.$at.toast(' ')
							} else {
								_this.$at.toast(' ')
							}
						}

					})

ソリューション


修正前にデフォルトで採用されていたSHA 256の統一注文により、第2部二次署名の際に使用されるMD 5は、2回の署名方法が一致せず、支払い喚起署名エラーを招く
  public WXPay(final WXPayConfig config, final String notifyUrl, final boolean autoReport, final boolean useSandbox) throws Exception {
        this.config = config;
        this.notifyUrl = notifyUrl;
        this.autoReport = autoReport;
        this.useSandbox = useSandbox;
        if (useSandbox) {
            this.signType = WXPayConstants.SignType.MD5; //  
        }
        else {
            this.signType = WXPayConstants.SignType.HMACSHA256;
        }
        this.wxPayRequest = new WXPayRequest(config);
    }

変更後、デフォルトMD 5を設定
 }
    public WXPay(final WXPayConfig config, final boolean autoReport, final String notifyUrl, final String signType) throws Exception{

        this.config = config;
        this.notifyUrl = notifyUrl;
        this.autoReport = autoReport;
        this.useSandbox = false;
        this.signType = "MD5".equals(signType)?WXPayConstants.SignType.MD5:WXPayConstants.SignType.HMACSHA256;
        this.wxPayRequest = new WXPayRequest(config);
    }

まとめ


微信の公式文書は少し乱れていて、このような明らかな間違いも変わっていません.要するに、最初のステップで注文と二次署名方法を統一して一致させなければならない.そうしないと、「支払い署名エラー」が発生する.uniappはデフォルトではmd 5しかサポートされていないので、uniappの学生は、できるだけ私の方法で暗号化するときはMD 5を直接採用し、節外の枝を避けるようにしています.