這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助

微信支付介紹
微信公眾號程式或微信小程式專案中基本都要有微信支付,支付場景基本就是點擊支付,然后手機底部拉起輸入微信支付密碼彈窗,密碼輸入正確后,支付完成,但是無論是微信小程式或微信公眾號程式都是在后端呼叫微信api介面進行統一下單,將介面回傳資料回傳前端拉起支付操作,然后異步通知支付結果的這樣一個流程,
微信公眾號程式接入支付
如果是微信公眾號程式接入微信支付,需要登錄微信公眾號,點擊廣告與服務 – 微信支付關聯一下注冊好的微信商戶平臺(此處一般都是客戶自己完成,不介紹,也就是說只有關聯過的微信商戶才能在公眾號中拉起支付,

然后點擊設定與開發 – 基本配置 ,拿到公眾號的appid和appsecret(開發密鑰),

微信小程式接入支付
如果是微信小程式程式接入微信支付,登錄微信小程式,點擊功能 – 微信支付,關聯一下注冊好的微信商戶平臺(此處一般都是客戶自己完成,不介紹,也就是說只有關聯過的微信商戶才能在小程式中拉起支付,

然后點擊開發 – 開發管理 – 開發設定,拿到小程式的appid和appsecret(開發密鑰),

微信商戶平臺配置
第一步
登錄微信商戶平臺,點擊賬戶中心 – API安全,設定一下證書和兩個密鑰(此處兩個密鑰設定為相同的),相關配置操作根據提示一步一步走流程就行的,【一般要用到操作密碼、多個短信驗證碼】

配置成功后,要拿到3個證書檔案和一個自己輸入進去的密鑰,務必保存并記錄下來,程式中會用到,拿到證書檔案如下:

第二步
點擊產品中心 – 我的產品 ,點擊申請JSAPI支付,

開發配置中需要填寫支付授權目錄,此處填寫后端服務器域名即可,

后端程式
后端開發由于編程語言不同,此處以PHP開發為例,介紹一下統一下單介面和退款介面的呼叫;首先要下載一下官方提供的SDK引入專案中,然后將之前獲取到的證書檔案也放入程式目錄中,由于各個版本SDK不同,此處只記錄自己用的配置流程(不喜勿噴),

如果需要我這版SDK,QQ:321824916
統一下單介面
官方有介面檔案,具體介面引數不做介紹,自己看吧,另外由于SDK版本不同,不保證下面的代碼可以無縫銜接其他SDK包直接使用,下面上代碼;
//引入擴展
import('JsPayWechat.lib.WxPayApi', 'vendor');
import('JsPayWechat.example.WxPayJsApiPay', 'vendor');
$tools = new \JsApiPay();
$input = new \WxPayUnifiedOrder();
//設定支付描述
$input->SetBody("********");
//內部訂單號(我們系統中自己生成的訂單號)
$input->SetOut_trade_no($tid);
//訂單金額,由于單位是分,而我的是元,故乘了100
$price = $price * 100;
$input->SetTotal_fee("" . ($price));
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
//支付結果通知地址,寫支付結果邏輯的訪問鏈接
$notifyUrl = zUrl('Other/dealLevelOrder');
$input->SetNotify_url($notifyUrl);
$input->SetTrade_type("JSAPI");
//拉起支付用戶的open_id
$input->SetOpenid($open_id);
$order = \WxPayApi::unifiedOrder($input);
$jsApiParameters = $tools->GetJsApiParameters($order);
$jsApiParameters = json_decode($jsApiParameters, true);
// 將$jsApiParameters內容回傳前端頁面即可,
微信公眾號拉起支付前端處理
//介面回傳的下單成功資料
var jsApiParameters = result.jsApiParameters;
//跳轉微信支付頁面
wx.chooseWXPay({
timestamp: jsApiParameters.timeStamp,
nonceStr: jsApiParameters.nonceStr,
package: jsApiParameters.package,
signType: jsApiParameters.signType,
paySign: jsApiParameters.paySign,
success: function (res) {
//微信支付成功回呼
}
});
微信小程式拉起支付前端處理
//介面回傳的下單成功資料
let resultdata = https://www.cnblogs.com/smileZAZ/archive/2022/07/26/res.data.jsApiParameters;
//拉起微信支付
wx.requestPayment({ //成功之后,呼叫小程式微信支付'timeStamp': resultdata.timeStamp,
'nonceStr': resultdata.nonceStr,
'package': resultdata.package,
'signType': 'MD5',
'paySign': resultdata.paySign,
success: function (res) {
//支付成功的回呼
},
})
退款介面
//拉起微信退款申請
$re_tid = 'RE' . time() . Zrand(6);
import('JsPayWechat.lib.WxPayApi', 'vendor');
import('JsPayWechat.example.WxPayJsApiPay', 'vendor');
$input = new \WxPayRefund();
$input->SetOut_trade_no($shopBondOrderInfo['tid']); //原訂單號
$input->SetTransaction_id($shopBondOrderInfo['transaction_id']); //原訂單號
$input->SetOut_refund_no($re_tid); //退款訂單號
$input->SetTotal_fee($shopBondOrderInfo['price'] * 100); //訂單金額
$input->SetRefund_fee($shopBondOrderInfo['price'] * 100); //退款金額
$input->SetOp_user_id(\WxPayConfig::MCHID);
if ($result['result_code'] == "SUCCESS") {
//退款成功處理
}
本文轉載于:
https://blog.csdn.net/pangjunwei/article/details/124348223
如果對您有所幫助,歡迎您點個關注,我會定時更新技術檔案,大家一起討論學習,一起進步,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/500375.html
標籤:其他
