# 生码

微信后台向业务方请求二维码源数据，前端可以根据源数据生成乘车码。

## 1、请求参数

| 参数名称       | 类型   | 必选 | 备注                   |
| -------------- | ------ | ---- | ---------------------- |
| appid          | string | Y    | 小程序                 |
| appidmch_id    | string | Y    | 支付商户号             |
| nonce_str      | string | Y    | 随机字符串             |
| encrypted_data | string | Y    | 使用AESCBCPKCS7PADDING |
| iv             | string | Y    | 用于解密的 IV（base64 后） |
| sign           | string | Y    | 1~5字段的签名          |

encrypted_data 解密后的数据

| 参数名称        | 类型   | 必选 | 备注                            |
| --------------- | ------ | ---- | ------------------------------- |
| openid          | string | Y    | 用户                            |
| idcard_id       | string | Y    | 第三方用户 ID（有注册环节则有）  |
| user_public_key | string | Y    | 用户公钥，16进制格式，共130字节 |

## 2、返回参数

| 参数名称       | 类型   | 必选 | 备注                   |
| -------------- | ------ | ---- | ---------------------- |
| errcode        | int    | Y    | 0为成功                |
| errmsg         | string | N    | 错误信息               |
| nonce_str      | string | Y    | 原样带回               |
| encrypted_data | string | Y    | 使用AESCBCPKCS7PADDING |

encrypted_data 解密后的数据

| 参数名称        | 类型   | 必选 | 备注                                                         |
| --------------- | ------ | ---- | ------------------------------------------------------------ |
| base64_svr_data | string | Y    | 交通部乘车码标准1~15字段拼接的二进制流，base64 后便于网络传输 |

## 3、示例代码

请求：

```json
{"appid":"test","mch_id":"123456","nonce_str":"abcdefg","encrypted_data":"jfiwajeofjiefef","iv":"afweifwefe"}
```

encrypted_data 解密后:

```json
{"openid":"1234","user_public_key":"123123","card_id":"2342343"}
```

返回：

```json
{"errcode":0,"nonce_str":"abcdefg","encrypted_data":"jfiwajeofjiefef","iv":"afweifwefe"}
```

encrypted_data 解密后的数据：

```json
{"base64_svr_data":"xxafdafd"}
```
