坑爹微信 微信支付相關問題解決

2021-08-01 23:07:15 字數 3662 閱讀 4699

如果不知道怎麼配置,請看這裡

生成商戶訂單

先要根據自己的業務邏輯生成自己可讀的商戶訂單號,一般推薦年月日+隨機數+使用者uid

$order_no = date('ymdhis').rand(1000,9999).$uid;
使用同一下單介面下單

unifiedorder_pub類:

<?php 

namespace

org\weixinpay;

useorg\weixinpay\wxpay_client_pub;

useorg\weixinpay\wxpayconf_pub;

useorg\weixinpay\sdkruntimeexception;

/** * 統一支付介面類

*/class

unifiedorder_pub

extends

wxpay_client_pub

/*** 生成介面引數xml

*/function

createxml

() elseif($this->parameters["body"] == null)elseif ($this->parameters["total_fee"] == null ) elseif ($this->parameters["notify_url"] == null) elseif ($this->parameters["trade_type"] == null) elseif ($this->parameters["trade_type"] == "jsapi" &&

$this->parameters["openid"] == null)

$this->parameters["mch_id"] = $this->mchid;//商戶號

//$this->parameters["sub_mch_id"] = "1******x2";//子商戶號

$this->parameters["spbill_create_ip"] = get_client_ip();//終端ip

$this->parameters["nonce_str"] = $this->createnoncestr();//隨機字串

$this->parameters["sign"] = $this->getsign($this->parameters);//簽名

return

$this->arraytoxml($this->parameters);

}catch (sdkruntimeexception $e)

}/**

* 獲取prepay_id

*/function

getprepayid

()

}

//mchid 商家商戶號

//key 商家支付秘鑰

//呼叫統一下單

waring:在第一步裡面會出的錯誤就是你的四個引數沒有按順序給對,記住這裡面的引數一定要按順序給,並且你要檢查你的四個引數是否是有效的沒有過期

但是如果你寫入了除錯js的話可以看見具體錯誤,這裡就不提除錯js了。

第二步:向統一下單介面中新增所需引數

$unifiedorder->setparameter("body",$this->order_info['order_name']);//商品描述

$unifiedorder->setparameter("out_trade_no",$order_no);//商戶訂單號

$unifiedorder->setparameter("total_fee",floatval($pay_money*100));//總金額

$unifiedorder->setparameter("notify_url",$notice_url);//通知位址

$unifiedorder->setparameter("trade_type","jsapi");//交易型別

warning: 在第二步中,尤其要注意的就這個通知位址的格式,通知位址一定不能帶任何引數的位址,包括你是pathinfo模式也好,只能以www.***xx.com/index.php這種模式結尾。

www.***.com/index.php?a=index,www.***.com/index.php/admin/index 這樣的寫法全部是錯的。

第三步:獲取預支付資訊

將上述內容提交給介面,正確可返回預支付id

$prepay_result = $unifiedorder->getprepayid();

如果錯誤,我們可以列印來檢視是什麼錯誤

var_dump($prepay_result);

$prepay_result['return_code'] == 'fail'

//標誌支付失敗

$prepay_result['return_msg']//這個角標中有具體錯誤資訊列印看看!

//缺少統一支付介面必填引數out_trade_no!

//缺少統一支付介面必填引數body

//缺少統一支付介面必填引數total_fee!

//缺少統一支付介面必填引數notify_url!

//...等等一些的錯誤提示,大家可以列印出來看看,然後對照著修改

當我們已經拿到預支付id的時候,那麼支付準備已經完成第一步:在前台檔案中我們使用註冊支付jsapi

//調起支付必備引數準備

function

onbridgeready

(msg_json),

function

(res)else});

}

第二步:支付js準備繫結事件(這裡就舉例按鈕)

$('#button_pay_now').on('click',function()else

if (document.attachevent)

}else

});

1.缺少統一支付介面必填引數total_fee!這個錯造成的原因:

q:你沒有傳遞引數total_feea:檢查是否傳遞引數,最好一步步列印到日誌中檢視

q:total_fee 引數格式錯誤a:引數的單位是分,也就是一元錢的話就是100,所以建議最後處理的時候都要處理為分,建議最後用floatval處理下

2.缺少統一支付介面必填引數notify_url!

這個錯造成的原因:

q:你沒有傳遞引數notify_urla:檢查是否傳遞引數,最好一步步列印到日誌中檢視

q:notify_url 引數格式錯誤a:通知位址一定不能帶任何引數的位址,包括你是pathinfo模式也好,只能以www.***xx.com/index.php這種模式結尾

3.簽名錯誤

微信支付坑

php view plain copy print sudo yum install ca certificates service php fpm restart 今天支付接入了 相關邏輯,寫完後,我又測試了以前的會員卡支付的,發現在支付階段提示失敗,於是加上測試語句,提示 getbrandwcp...

微信支付和整合微信支付的坑

keytool list keystore x.keystore 需要注意的是你除錯的簽名和發版的是不一樣的要注意修改保證你跑的時候二個配置是一樣的 宣告許可權 android name android.permission.internet android name android.permiss...

微信支付的坑

環境 框架 windows7 intellij idea jdk8 tomcat spring 支付型別 掃碼支付模式二 統一下單介面 只是希望少一點人踩同樣坑的列表 未完 這一點上也真是省力 簽名校驗問題網上說的 一定要確認引數名稱和大小寫 確實要注意,但另外一些 有中文就不行 凡string都要...