# 4.消费交易 ## 4.1. 消费交易地址 交易名称 |测试地址|生产地址 ------- |-----------|------- 消费接口 | | ## 4.2. 消费交易接口 1.接口说明 商户网关将订单信息发送给 ALLPAY 网关,由 ALLPAY 网关进行处理后将交易流水 号,即 tn,返回给商户网关,tn 作为调起手机 app 支付控件的参数。 2.请求报文格式 下面列举的字段为通用字段,每个渠道都需要上送,部分渠道有渠道专属字段,具体字段请到该渠道的专属渠到字段说明处查看 | 参数 | 类型 | 属性 | 描述 | | ------------- | ------------ | ---- | ------------------------------------------------------------ | | version | String(12) | M | 统一填写为“VER000000002” | | charSet | String(6) | M | 统一填写为“UTF-8” | | transType | String(4) | M | 消费交易填写“PURC” | | orderNum | String(60) | M | 订单号:商户自行定义,需保证同一商户号下订单号不能重复 | | orderAmount | String(12) | M | 订单金额:如 100 元,表示为 100 或 100.00 | | orderCurrency | String(3) | M | 订单币种:ISO标准 如:人民币填写“CNY”,美元填写"USD" | | frontURL | String(400) | M | app 模式默认填"nil" | | backURL | String(400) | M | 支付结果异步通知到该地址 | | merReserve | String(1024) | M | 商户预留内容,可传任意内容,如购买商品信息、员号等,但不要传特殊符号,如逗号。 | | merID | String(15) | M | 商户 ID,由AllPay 分配 | | acqID | String(11) | M | 收单行 ID "99020344" | | paymentSchema | String(10) | M | 渠道代码:[点击查看详情](https://git.allpayx.com/OpenAPI/b2c_pc_payment/src/master/paymentSchema.md) | | goodsInfo | String(60) | M | 商品信息 | | transTime | String(14) | M | 交易时间,格式:"yyyyMMddHHmmss" | | signType | String(3) | M | MD5 | | signature | String(32) | M | 采用 MD5 签名 | 3. 响应报文格式 | 参数 | 类型 | 属性 | 描述 | | ---- | ---------- | ---- | ---------------------------------- | | tn | String(32) | M | 交易流水号,作为调起 sdk 支付的参数 | ## 4.4. iOS 客户端接入步骤 ## 4.4.1. 接入说明 启动支付控件的接口,接口定义如下: ```c [AllPaySDK pay:[diction objectForKey:@"tn"] mode:NO scheme:@"com.xxx.xxx" ViewController:self onResult: ^(NSDictionary *resultDic) { //此处处理同步支付结果 }]; 参数说明 tn: 是从服务器端获取的流水号; mode:测试环境:NO; 生产环境:YES。 Scheme: 可以为任意值推荐填写成"com.xxx.xxx" 等形式, 有特殊配置的渠道会在渠道专属配置里面说明 ViewController: 调用 SDK 时的 ViewController; onResult: 接收同步结果通知 ``` ## 4.4.2. 添加 SDK 包 1. 将 allpaysdk 下的 AllPaySDK.h,libAllPaySDK.a文件add到项目中 2. 在 APPDelegate.m 类中导入头文件: #import "allpaysdk/AllPaySDK.h" 并添加如下方法 ```c -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ [AllPaySDK openURL:url]; return YES; } -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ [AllPaySDK openURL:url]; return YES; } -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options{ [AllPaySDK openURL:url]; return YES; } ``` 1. 根据要使用的渠道的专属配置,对项目进行配置 ## 4.4.3 同步结果通知 ```c [AllPaySDK pay:[diction objectForKey:@"tn"] mode:NO scheme:@"com.xxx.xxx" ViewController:self onResult: ^(NSDictionary *resultDic) { //此处处理同步支付结果 }]; ``` resultDic,转为 json 字符串,格式如下: { "state": "cancel", "paymentSchema": "YL", "orderNum": "604337497032", "errorDetail": "user cancel operation" } 报文说明 - state: "success"代表成功, "cancel"代表用户取消操作, "fail"代表失败 - paymentSchema: 支付渠道, 印度本地支付:"EB", "APMP"代表支付宝, "WX"代表微信,"APP"代表ApplePay - orderNum: 订单号 - errorDetail: 错误详情 | 参数 | 说明 | | ------------- | :----------------------------------------------------------: | | state | "success"代表成功, "cancel"代表用户取消操作, "fail"代表失败 | | paymentSchema | 印度本地支付:"EB", "APMP"代表支付宝, "WX"代表微信,"APP"代表ApplePay | | orderNum | 订单号 | | errorDetail | 错误详情 | ##