Uni-Appマイクロクレジットプログラム接続WeChat支払い

3797 ワード

WeChatアプリケーションはJSAPI方式で、フロントエンドで商品情報をバックグラウンドに送り、バックグラウンドで注文書を作成し、統一注文インターフェースを呼び出して、データパッケージをパッケージ化してアプリにWeChat支払いを調整します.
 
資料を準備します.
1.WeChat公衆番号を認証し、WeChat決済を開通する.
2.小プログラムバインディングWeChat支払い(小プログラム管理バックの左側のポイントWeChatで支払って、提示に従って操作する)
3.開発に必要なパラメータを取得する
開発パラメータは以下の通りです.
APPID:    appID
MCHID:   
KEY:      ,     :https://pay.weixin.qq.com/index.php/account/api_cert
APPSECRET:     :https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN

統一注文インターフェース:
ここで注意しなければいけません.使用するtrade typeはJSAPIです.そして、必ずOpenIdを設置してください.
            require_once WEB_ROOT_DIR . 'lib/wx/WxPay.Data.php';
            require_once WEB_ROOT_DIR . 'lib/wx/WxPay.Config.php';
            require_once WEB_ROOT_DIR . 'lib/wx/WxPay.Api.php';

            $orderData = new WxPayUnifiedOrder();
            $wxConfig = new WxPayConfig();
            $wxApi = new WxPayApi();
            $orderData->SetOut_trade_no($out_trade_no);
            $orderData->SetBody('    ');
            $orderData->SetTotal_fee($amount);
            $orderData->SetTrade_type('JSAPI');
            $orderData->SetOpenid($this->userInfo['open_id']);

            $this->debug($orderData->getData());

            $unifiedOrder = [];
            try {
                $unifiedOrder = $wxApi->unifiedOrder($wxConfig, $orderData);
            } catch (WxPayException $e) {
                $this->debug($e->errorMessage());
                FResponse::jsonErr($e->errorMessage());
            }

            $this->debug($unifiedOrder);


            if ($unifiedOrder['return_code'] == 'SUCCESS' &&
                $unifiedOrder['result_code'] == 'SUCCESS'
            ) {
                //     
            }

おめでとうございます.注文が成功したら、配置は大丈夫です.
注文を返していない場合は、マイクロクレジットを結合しているかどうかを確認する必要があります.JSAPI決済が開通していますか?
注文が成功した後、私たちは重要なパラメータを得ました.id
その後、私達は次のステップで小さなプログラムで呼び出すためのパケットを作成します.
                //     finalPkg
                $finalPkg = [
                    "appId" => $wxConfig->GetAppId(),
                    "timeStamp" => time(),
                    "nonceStr" => $unifiedOrder['nonce_str'],
                    "package" => 'prepay_id='.$unifiedOrder['prepay_id'],
                    "signType"=>$wxConfig->GetSignType(),
                ];

                $orderData = new WxPayUnifiedOrder();
                $finalPkg['sign'] = $orderData->getPkgSign($wxConfig, $finalPkg);
ここで注意したいのですが、このカバンはAppのカバンと構造が違っています.ですから、パラメータを厳密に合わせます.
最後に、Uni-Appでこのカバンを使えばWeChatでお支払いできます.

	this.httpGet("order/pay" + "?order_id=" + resp.data.result.id).then(resp1 => {
		if (resp1.data.status == 'ok') {
				
			uni.requestPayment({
				provider: 'wxpay',

				timeStamp: resp1.data.result.timeStamp + '',
				nonceStr: resp1.data.result.nonceStr,
				package: resp1.data.result.package,
				signType: resp1.data.result.signType,
				paySign: resp1.data.result.sign,


				success: function(res) {
					uni.showToast({
						title: "    ",
						duration: 3000,
						icon: 'none',
					});
					setTimeout(function() {

						uni.redirectTo({
							url: '/pages/my_orders/my_orders' +
								'?order_id=' + order_id
						});
					}, 1500);
					
				},
				fail: function(err) {
					uni.showModal({
						content: "    ,   :
" + err.errMsg, showCancel: false, }) console.log('fail:' + JSON.stringify(err)); } }); } })