purc.md 5.0 KB

4.消费交易

4.1. 消费交易地址

交易名称 测试地址 生产地址
消费接口 https://testapi.allpayx.com/app/pay https://api.allpayx.com/app/pay

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 渠道代码:点击查看详情
goodsInfo String(60) M 商品信息
transTime String(14) M 交易时间,格式:"yyyyMMddHHmmss"
signType String(3) M MD5
signature String(32) M 采用 MD5 签名
  1. 响应报文格式

| 参数 | 类型 | 属性 | 描述 | | ---- | ---------- | ---- | ---------------------------------- | | tn | String(32) | M | 交易流水号,作为调起 sdk 支付的参数 |

4.3. Android 客户端接入步骤

4.3.1. 接入说明

启动支付控件的接口,接口定义如下:

public static void pay(Activity activity,String tn,boolean mode)

::: tip 参数说明 activity —— 用于启动支付控件的活动对象

tn —— 订单信息为交易流水号,即 TN,为商户后台从 AllPay 后台获取

mode —— AllPay 后台环境标识,true 将在 AllPay 正式环境发起交易,false 将在 AllPay 测试环 境发起交易 :::

4.3.2. 添加 SDK 包

  1. 把allpaysdk当做Module导入到自己的工程
  2. 在Application Module的build.gradle文件的dependencies下添加compile project(':allpaysdk')
  3. 在Application Module的build.gradle文件中添加
repositories {
    flatDir {
        dirs project(':allpaysdk').file('libs')
    }
}

4.3.3. 调用支付控件

接着可以通过以下方式调用支付控件:

/**
 * tn——交易流水号,即 TN,为商户后台从 AllPay 后台获取,获取方式参见 AllPay 网关对接文档
 * false 测试环境
 */
AllPayEngine.Pay(ShopCartActivity.this, tn, false);

4.3.4. 同步结果通知

支付完成后,获取支付控件支付结果,并添加相应处理逻辑,只需实现调用 Activity 中的 onActivityResult()方法即可,实例代码如下:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data == null) {
        return;
    }

    if (requestCode == AllPayConst.VTPAY_PAY_REQUESR_CODE&& resultCode == AllPayConst.VTPAY_PAY_RESULT_CODE) {
        String result = data.getExtras().getString("pay_result");
    }
}

pay_result,为 json 字符串,格式如下:

{
    "state": "cancel",
    "paymentSchema": "UP",
    "orderNum": "604337497032",
    "errorDetail": "user cancel operation "
}

报文说明:

  • state: "success"代表成功, "cancel"代表用户取消操作,"fail"代表失败,"query"代表 app 需要调用查询接口来确认订单状态
  • paymentSchema: 支付渠道, "APMP"代表支付宝, "WX"代表微信
  • orderNum: 订单号
  • errorDetail: 错误详情