iOS SDK接口说明

类: ScanForPayTask

定义: @interface ScanForPayTask : NSObject

方法:- pay

调用此方法发起支付

定义:

    -(void) pay:(NSString *)orderInfo         // 支付订单信息字串
      appScheme:(NSString *)scheme.           //调用支付的app注册的scheme, 从钱包返回app时使用
       callback:(CallBackBlock)callback;      //支付结果回调Block,支付方式为支付宝时:wap支付(如果没有安装支付宝)结果会进入该回调
orderInfo-请求数据说明

将下面的字段按照请求格式的说明组装在业务数据里,并在服务端签名,然后转换为JSON格式的字符串传入orderInfo字段。

名称 参数名 数据类型 必填 说明
门店编号 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"}

方法:- payH5

用于拦截内嵌在WebView里去支付宝支付宝的URL,自动转换并拉起支付宝App进行支付。用户可以减少在H5上登陆等繁琐的步骤。

具体用法可以见demo里的WebviewController.m里的调用

定义:

    -(void) payH5:(NSString *)url。        // 被拦截的url
        appScheme:(NSString *)scheme       // 调用支付的app注册的scheme, 从钱包返回app时使用
         callback:(CallBackBlock)callback; //支付结果回调Block

方法:- handleOpenURL

该方法用于处理支付后跳回商户app携带的支付结果Url,需要在AppDelegate.m中的openURL回调中调用,将返回的URL串传给该方法,该方法会将对应的支付订单信息返回。App拿到订单信息后,需要判断是否成功,并将信息交给服务端校验签名以确保数据真实性。服务端还可以来ScanForPay服务端查询交易状态。

定义:

    - (BOOL)handleOpenURL:(NSURL *)url callback:(CallBackBlock)callback;

回调返回NSDictionary *dictResult, 格式形如:

    {
        "code": 1, //返回码,1为成功,其他为失败。负数为支付宝返回的错误,一般是用户取消等,可以不处理
        "msg": '', // 返回信息
        "data": {
            "status": 1,  // 支付状态,1为支付成功,其他为支付未成功
            "params": ""  // 返回的订单信息,字段见下表
        }
    }
订单信息数据说明
名称 参数名 数据类型 必填 说明
响应码 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"}

results matching ""

    No results matching ""