Android SDK接口说明
类:com.scanforpay.sdk.ScanForPayPayTask
void pay(String request);
发起支付请求。
request的格式为ScanForPay服务器的请求格式。按照请求格式的说明,组装好并签名,以字符串形式传给pay方法即可。
签名务必放在服务器端进行。请求数据说明
名称 | 参数名 | 数据类型 | 必填 | 说明 |
---|---|---|---|---|
门店编号 | storeNo | String (15) | Y | 由scanforpay分配 |
商户订单号 | partnerOrderNo | String (32) | Y | 由商户生成 20180802100000001 |
钱包 | wallet | String (10) | C | Wechat: 微信支付 Alipay: 支付宝 AlipayHK: 支付宝香港 |
商品金额 | goodsExtraAmount | int | N | 选填 交易币种的最小单位 如果商家币种是人民币,则100表示100分=1元;如果商家币种是日元,则100表示日元的 100元 |
商品附加费 | goodsAmount | int | N | 选填 交易币种的最小单位 如果商家币种是人民币,则100表示100分=1元;如果商家币种是日元,则100表示日元的 100元 |
交易币种 | currency | String (10) | Y | 交易币种需与商户交易币种一致 |
交易金额 | orderAmount | int | Y | 交易币种的最小单位 如果商家币种是人民币,则100表示100分=1元;如果商家币种是日元,则100表示日元的 100元 |
交易说明 | orderTitle | String(100) | N | 对交易的说明 |
操作员 | operatorId | String(20) | N | 10001 |
支付成功通知地址 | notifyUrl | String(200) | N | 如果填写,则支付成功后会通知到该地址,商户需处理重复通知的情况。如果不填,则支付成功不会进行通知。 |
完整请求串示例
{"request":{"header":{"requestTime":"2018-07-25T18:06:05+08:00","partnerNo":"10001","signType":"SHA256","version":"1.0","reqMsgId":"fd03f269-3180-4575-8af0-8f6cf324fb0f"},"body":{"merchantId":"100010000000002","partnerOrderNo":"p20180725180605466813","orderAmount":2100,"orderTitle":"Consume","barcode":"284447106610060508","operatorId":"211918","terminalNo":"123456","notifyUrl":"http://192.168.31.72:8080/ScanForPay/notify"}},"signature":"2d2d5c66a67a24b5e13705cc38f34d93c395a7d9e0e4ff9425c9ce07b806a1cc"}
void setSandBox(Boolean sandBox);
设置是否为沙箱环境。true: 沙箱 false: 生产
void setListener(ScanForPayResultListener listener);
设置Listener,需要在pay之前调用。
接口: com.scanforpay.sdk.ScanForPayResultListener
@Override
void onSuccess(ScanForPayResult result);
@Override
void onFail(ScanForPayResult result);
实现该接口,并调用setListener
来设置Listener。
成功回调:支付成功时,会进入该回调,如果result里的status为SUCCESS_CODE,代表支付状态成功,需要将params里的内容发给服务端进行签名校验。
失败调用:失败或者用户取消都会进入该回调,但是将客户端返回的取消等错误码都转为了负数,如果是负数则可以不处理。
类:com.scanforpay.sdk.ScanForPayResult
int getCode();
获取响应码。响应码定义:
public static final int SUCCESS_CODE = 0; // 成功
public static final int PARAMS_ERROR = 100; // 请求串不正确
其他响应码参考msg信息。
String getMsg();
获取返回信息。
String getStatus();
支付成功状态:1代表成功,其他代表未成功。
String getParams();
支付回调的订单信息。回调的信息格式和一般的响应格式相同,参考响应格式
回调的业务数据如下:
回调数据说明
名称 | 参数名 | 数据类型 | 必填 | 说明 |
---|---|---|---|---|
响应码 | code | int(5) | Y | 1:成功 其他为交易失败 |
响应信息 | msg | varchar (100) | Y | 响应信息 |
支付订单号 | orderNo | varchar(32) | Y | 由scanforpay生成 |
商户订单号 | partnerOrderNo | String (32) | Y | 由商户生成 20180802100000001 |
交易金额 | orderAmount | int | Y | 交易币种的最小单位 如果商家币种是人民币,则100表示100分=1元;如果商家币种是日元,则100表示日元的 100元 |
支付钱包 | wallet | String (10) | Y | Wechat: 微信支付 Alipay: 支付宝 |
订单状态 | status | int | Y | 0:待支付 1:支付成功 2:支付失败 3:已退款 |
支付时间 | payTime | String(25) | N | Date time with timezone, see RFC 3339 Section 5.6 for details. 2018-07-25T17:54:00+08:00 |
支付币种 | currency | varchar(5) | Y | JPY |
付款人账号 | buyer | varchar(30) | N | c*@gmail.com |
付款ID | buyerId | varchar(30) | N | 208xxxxxxxxxx012 |
回调数据示例
{"response":{"header":{"partnerNo":"10001","respTime":"2018-07-25T18:06:12+08:00","signType":"SHA256","version":"1.0","reqMsgId":"213ca19e-c75f-450d-9acf-46e860570bb9"},"body":{"code":1,"msg":"success","orderNo":"2018072518060757","partnerOrderNo":"p20180725180605466813","payTime":"2018-07-25T18:06:12+08:00","orderAmount":2100,"wallet":"Alipay","currency":"JPY","status":1,"buyer":"cd****@qq.com","buyerId":"208xxxxxxxxxx012"}},"signature":"0710b2630b467c14b3d54295def7f89be61097c21472547823b43c58f3466b08"}