任玩堂海外联运iOS SDK
测试环境不完全支持HTTPS。
首先让我们看看 AGGameInternationalSDK 接入的步骤
在需要的地方添加
#import <AGJointOperationSDK/AGJointOperationSDK.h>
初始化
[AGGameInternationalSDK setClientId:@"你的id" clientSecret:@"你的secret" appleAppID:@"你的应用的Apple Id"];
//默认为正式环境,NO为测试环境,内购沙盒测试请设置为NO
[AGGameInternationalSDK setProductionMode:NO];
后续步骤参考 Example/AGGameInternationalSDK 中的工程。
用户完成支付后,SDK 服务器会向开发商服务器发起 POST 回调,通知订单处理结果。开发商需要在内购时传入回调地址。
名称 | 可选 | 说明 |
---|---|---|
trade_id | 否 | 开发商提交的订单号 |
appgame_order_id | 否 | 支付系统生成的订单号 |
amount | 否 | 交易金额,以“元”为单位 |
status | 否 | 订单支付状态:complete - 完成 failed - 失败 canceled - 已取消 |
time | 否 | 回调请求发起时间,Unix时间戳形式 |
provider | 否 | 支付渠道标识码,根据 CP 接入的渠道而异,目前苹果的标识码为Apple |
private_info | 是 | CP 在发起支付请求时,若提供 private_info,则原值返回,若未提供,则无此参数 |
sign | 否 | 通知请求签名,用于验证通知有效性。 |
开发商收到通知后请处理支付结果,并返回字符串 ok 表示回调处理成功。如果 SDK 服务器发送通知请求后,未得到 ok 响应,则会在一段时间内尝试重新发起请求。尝试重发间隔为:1 分钟,2 分钟,10 分钟,30 分钟,1 小时,2 小时,4 小时,12 小时,24 小时,最多重发 9 次。
将所有参数键值对(参数=值,不包含 sign 本身)按照参数名从小到大顺序排序,用 & 符号连接起来,计算出 MD5 值,连接上开发商的 APP Secret 再次计算 MD5 值即为签名值:
md5(md5("参数1=值1&参数2=值2")+秘钥)
通过 SDK 客户端获取 Access Token 成功后,如果对安全要求较高,可以用它向 SDK 服务器请求用户资源来进行认证,示例如下:
GET https://passport.appgame.com/resource/userinfo?access_token=aKmsEfsLLmLDpJneSTmyykYYNe4jKiwvn20YAb6v
测试环境下请调用测试服务器接口:
GET http://passport.test.appgame.com/resource/userinfo?access_token=aKmsEfsLLmLDpJneSTmyykYYNe4jKiwvn20YAb6v
如果请求成功,服务器将返回类似如下格式的 JSON 数据:
{
"id":"1000",
"passport_id":"1000",
"username":"Fishdrowned",
"email":"[email protected]",
"mobile":"137XXXXXXXX",
"avatar": "http://avatar.static.appgame.com/uploads/avatar/4d/Z9/4cCx.png",
"nickname":"Fishdrowned",
"sex": 0,
"province": 1,
"province_name":"北京市",
"city": 2,
"city_name":"市区"
}
如果请求失败,服务器将返回类似如下格式的 JSON 数据:
{
"status":401,
"error":"unauthorized",
"error_message":"Access token is not valid"
}