1. 接口规则
为了在保证支付安全的前提下,带给商户简单、一致且易用的开发体验,我们推出了全新的微信支付APIv3接口。该版本API的具体规则请参考APIv3接口规则。
2. 开发准备
2.1. 搭建和配置开发环境
开发者应当依据自身的编程语言来构建并配置相应的开发环境。
3. 快速接入
3.1. 业务流程图
重点步骤说明:
步骤1 配置出行乘车券
步骤2.3 出行券发放后,商户可通过《出行券切卡组件预下单API》获取拉起小程序需要的token参数。
步骤2.5 获取token后,商户可按照《拉起快捷切卡小程序》部分的描述拉起小程序。
3.2. API接入(含示例代码)
文档展示了如何使用微信支付服务端 SDK 快速接入智慧商圈产品,完成与微信支付对接的部分。
3.2.1. 【服务端】出行券切卡组件预下单
步骤说明: 该接口为拉起快捷切卡小程序的前置步骤,通过调用快捷切卡组件预下单API获取授权token。
JAVA示例代码:

1public void BuildRelations() throws Exception{
2
3 HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/industry-coupon/tokens");
4
5 String reqdata = "{"
6 + "\"open_id\": \"obLatjrR8kUDlj4-nofQsPAJAAFI\","
7 + "\"coupon_list\": {"
8 + "\"coupon_id\":\"11005526091\","
9 + "\"stock_id\":16584651"
10 + "}"
11 + "}";
12 StringEntity entity = new StringEntity(reqdata,"utf-8");
13 entity.setContentType("application/json");
14 httpPost.setEntity(entity);
15 httpPost.setHeader("Accept", "application/json");
16
17 CloseableHttpResponse response = httpClient.execute(httpPost);
18 try {
19 int statusCode = response.getStatusLine().getStatusCode();
20 if (statusCode == 200) {
21 System.out.println("success,return body = " + EntityUtils.toString(response.getEntity()));
22 } else if (statusCode == 204) {
23 System.out.println("success");
24 } else {
25 System.out.println("failed,resp code = " + statusCode+ ",return body = " + EntityUtils.toString(response.getEntity()));
26 throw new IOException("request failed");
27 }
28 } finally {
29 response.close();
30 }
31}
PHP示例代码:

1try {
2 $resp = $client->request(
3 'POST',
4 'https://api.mch.weixin.qq.com/v3/industry-coupon/tokens',
5 [
6
7 'json' => [
8 "open_id" => "obLatjiVCpXycAp8CWjsD5oAzHQ4",
9 "coupon_list" => [
10 "coupon_id" => "11005526091",
11 "stock_id" => 16584651,
12 ]
13 ],
14 'headers' => [
15 'Accept' => 'application/json'
16 ]
17 ]
18 );
19 $statusCode = $resp->getStatusCode();
20 if ($statusCode == 200) {
21 echo "success,return body = " . $resp->getBody()->getContents()."\n";
22 } else if ($statusCode == 204) {
23 echo "success";
24 }
25} catch (RequestException $e) {
26
27 echo $e->getMessage()."\n";
28 if ($e->hasResponse()) {
29 echo "failed,resp code = " . $e->getResponse()->getStatusCode() . " return body = " . $e->getResponse()->getBody() . "\n";
30 }
31 return;
32}
重要入参说明:
open_id: OpenID是微信用户在AppID下的唯一用户标识(AppID不同,则获取到的OpenID就不同),可用于永久标记一个用户。OpenID获取方式请参考以下文档小程序获取OpenID、公众号获取OpenID、App获取OpenID。
coupon_id: 微信为代金券唯一分配的ID。
stock_id: 批次号,微信为每个代金券批次分配的唯一ID。
3.2.2. 【服务端】接收商圈支付结果通知
步骤说明:引导切卡流程在独立的小程序中执行,调用方通过跳转小程序的方式可以快速拉起。
示例代码:

1let mch_code = '';
2let token = '';
3
4wx.navigateToMiniProgram({
5 appId: 'wx179335ce27355ca8',
6 path: `trafficCoupon/pages/index/index?mch_code=${mch_code}&token=${token}`,
7 success() {
8
9 },
10 fail() {
11
12 }
13});