為了在保證支付安全的前提下,帶給商戶簡單、一致且易用的開發(fā)體驗,我們推出了全新的微信支付APIv3接口。該版本API的具體規(guī)則請參考“APIv3接口規(guī)則”
為了幫助開發(fā)者調(diào)用開放接口,我們提供了JAVA、PHP、GO三種語言版本的開發(fā)庫,封裝了簽名生成、簽名驗證、敏感信息加/解密、媒體文件上傳等基礎(chǔ)功能(更多語言版本的開發(fā)庫將在近期陸續(xù)提供)
測試步驟:
1、根據(jù)自身開發(fā)語言,選擇對應(yīng)的開發(fā)庫并構(gòu)建項目,具體配置請參考下面鏈接的詳細(xì)說明:
? wechatpay-java(推薦)wechatpay-apache-httpclient,適用于Java開發(fā)者。
? wechatpay-php(推薦)、wechatpay-guzzle-middleware,適用于PHP開發(fā)者
注:當(dāng)前開發(fā)指引接口PHP示例代碼采用wechatpay-guzzle-middleware版本
? wechatpay-go,適用于Go開發(fā)者
更多資源可前往微信支付開發(fā)者社區(qū)搜索查看
2、創(chuàng)建加載商戶私鑰、加載平臺證書、初始化httpClient的通用方法
@Before
public void setup() throws IOException {
// 加載商戶私鑰(privateKey:私鑰字符串)
PrivateKey merchantPrivateKey = PemUtil
.loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
// 加載平臺證書(mchId:商戶號,mchSerialNo:商戶證書序列號,apiV3Key:V3密鑰)
AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
// 初始化httpClient
httpClient = WechatPayHttpClientBuilder.create()
.withMerchant(mchId, mchSerialNo, merchantPrivateKey)
.withValidator(new WechatPay2Validator(verifier)).build();
}
@After
public void after() throws IOException {
httpClient.close();
}
3、基于接口的示例代碼,替換請求參數(shù)后可發(fā)起測試
說明:
? 上面的開發(fā)庫為微信支付官方開發(fā)庫,其它沒有審核或者控制下的第三方工具和庫,微信支付不保證它們的安全性和可靠性
通過包管理工具引入SDK后,可根據(jù)下面每個接口的示例代碼替換相關(guān)參數(shù)后進(jìn)行快速測試
? 開發(fā)者如果想詳細(xì)了解簽名生成、簽名驗證、敏感信息加/解密、媒體文件上傳等常用方法的具體代碼實現(xiàn),可閱讀下面的詳細(xì)說明:
1.簽名生成
2.簽名驗證
3.敏感信息加解密
? 如想更詳細(xì)的了解我們的接口規(guī)則,可查看我們的接口規(guī)則指引文檔
重點步驟說明:
智慧商圈接入前需先郵件申請接入權(quán)限,申請發(fā)放具體可查看智慧商圈接入流程,小程序插件可參考:小程序插件開發(fā)文檔
步驟10 商圈支付結(jié)果通知(已開通積分功能的用戶,在場內(nèi)發(fā)生交易時,會將交易信息返回至開通時提交的回調(diào)地址)
步驟12 商圈積分同步(只有接入該接口,才會獲取到退款信息)
步驟13 商圈退款成功通知(對已同步過積分的交易,監(jiān)控30天內(nèi)的退款情況,若發(fā)生退款,則會把相關(guān)退款通知發(fā)送給商圈商戶,商戶的回調(diào)地址同支付結(jié)果回調(diào)地址保持一致)
文檔展示了如何使用微信支付服務(wù)端 SDK 快速接入智慧商圈產(chǎn)品,完成與微信支付對接的部分。
注意:
微信支付智慧商圈,需先接入商圈快速積分小程序插件。小程序插件可參考:小程序插件開發(fā)文檔
步驟說明:當(dāng)用戶完成支付,微信會把相關(guān)支付結(jié)果將通過異步回調(diào)的方式通知商戶,商戶需要接收處理,并按文檔規(guī)范返回應(yīng)答。
注意:
更多參數(shù)、響應(yīng)詳情及錯誤碼請參見 商圈支付結(jié)果通知API接口文檔
步驟說明:商圈服務(wù)商針對微信支付前序推送給商圈系統(tǒng)的顧客商圈內(nèi)交易通知,告知微信支付系統(tǒng)該筆交易的積分情況
示例代碼
public void SyncPoints() throws Exception{
//請求URL
HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/businesscircle/points/notify");
// 請求body參數(shù)
String reqdata = "{"
+ "\"sub_mchid\":\"1234567890\","
+ "\"transaction_id\":\"4200000533202000000000000000\","
+ "\"appid\":\"wx8828b70xxxxxxx8\","
+ "\"openid\":\"otPAN5xxxxxxxxrOEG6lUv_pzacc\","
+ "\"earn_points\":true,"
+ "\"increased_points\":100,"
+ "\"points_update_time\":\"2020-05-20T13:29:35.120+08:00\","
+ "\"total_points\":888888"
+ "}";
StringEntity entity = new StringEntity(reqdata,"utf-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Accept", "application/json");
//完成簽名并執(zhí)行請求
CloseableHttpResponse response = httpClient.execute(httpPost);
try {
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) { //處理成功
System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
} else if (statusCode == 204) { //處理成功,無返回Body
System.out.println("success");
} else {
System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
throw new IOException("request failed");
}
} finally {
response.close();
}
}
重要入?yún)⒄f明:
? transaction_id:微信支付推送的商圈內(nèi)交易通知里攜帶的微信訂單號
? earn_points:用于標(biāo)明此單是否獲得積分,true為獲得積分,false為未獲得
? increased_points:顧客此筆交易新增的積分值
更多參數(shù)、響應(yīng)詳情及錯誤碼請參見商圈積分同步接口文檔
A:可以。 若一個商圈擁有多個小程序,且在多個小程序場景里都適合引導(dǎo)會員開通【智慧商圈支付即積分】能力,請在提交支付即積分申請時,提交對應(yīng)的多個小程序的APPID,目前最多支持5個。
A:建議使用微信支付會員卡能力,來提升會員開卡的體驗,但是若未使用微信支付會員卡能力,一樣可以使用【智慧商圈支付即積分】能力。
【智慧商圈支付即積分】能力的實現(xiàn)非常靈活,使用插件形式,嵌入商圈自有小程序中,由商圈自行進(jìn)行會員身份判斷,若判斷是會員則可進(jìn)入“商圈快速積分插件”,引導(dǎo)用戶開通【智慧商圈支付即積分】能力。
A:該問題可通過商圈自行解決,登錄商圈小程序后臺,更新插件版本。
A:該問題可通過商圈自行解決:
1. 確認(rèn)是服務(wù)商模式還是商圈直連模式(登錄商戶平臺確認(rèn)證書配置):
a)若是服務(wù)商模式,則需要為服務(wù)商商戶號配置API-V3證書
b)若是商圈直連模式,則需要為商圈商戶號配置API-V3證書
2. 按照接口文檔進(jìn)行API證書配置,積分信息回調(diào)接口文檔, API證書配置
A:該問題可以通過商圈自檢解決。
【用戶插件頁檢查】
1. 用戶通過小程序進(jìn)入插件頁面,查看是否有交易但未提交,若有,則證明提前未簽到,直接點擊提交即可獲取積分(注:插件頁只能展示當(dāng)天的場內(nèi)消費信息,通過交易單號可識別是否為當(dāng)天交易)
【若用戶插件頁無交易-商圈可積分門店檢查】
1. 該門店未添加進(jìn)商圈內(nèi)(可能原門店的商戶號變更),自檢方式:使用用戶交易單號在小程序添加該門店,查看是否可添加,并且該門店已開啟“支持積分”(若用戶消費前,該門店未被圈入商圈,則該筆交易訂單不會自動推送,用戶可在商圈圈店后進(jìn)入插件頁手動推送)
2. 用戶未在門店消費