第七步:登陆部分接口展示,根据需求来实现接入。
1 2 3 4 5 6 7 |
void login(OnLoginFinishedListener listener); //调用豌豆荚登录/注册界面,获取uid和token
void logout(OnLogoutFinishedListener listener); //注销豌豆荚账号
void addWandouAccountListener(WandouAccountListener listener) //悬浮窗登陆和注销状态的获取
WandouPlayer getCurrentPlayerInfo(); // 获取玩家的信息 |
关于LoginFinishType的类型的参考:
LoginFinishType参数 |
内容 |
cancle |
登陆失败 |
非cancle |
登陆成功 |
一般的登陆错误,例如密码或者账号错误,SDK会自行判断。
cancle类型是单独针对在注册登陆界面,按返回键导致登陆失败的回调。这个是必须要实现的接口。
在没有登陆成功的情况,不能去获取token,如果登陆失败的情况下,去获取token,会报空指针的异常。
如果需要实现切换账号功能,需要先调用 logout 再去调用 login 。
第八步:用户验证。
1 |
String getToken(long duration) //获取当前用户的Token 字符串 |
如果需要验证用户的有效性,请在客户端请求此接口,然后使用得到的token字符串去服务端验证。
Token的服务器端验证接口:https://pay.wandoujia.com/api/uid/check 方法:GET,大小写敏感如果 token 有效,则返回字符串 true ,无效则返回 false 编码:UTF-8
参数名 |
内容 |
uid |
登录账户 uid |
token |
登录账户验证信息 |
appkey_id |
游戏AppKey_id,数字类型 |
通过Login的回调onLoginFinishedListener中的UnverifiedPlayer来获取登陆成功用户的uid和token。
第九步:支付相关
网游支付 – 调用
1 2 |
void pay(Activity activity, String orderDesc, long moneyInFen, String outTradeNo, OnPayFinishedListener onPayFinishedListener) |
其中 orderDesc 道具名称,moneyInFen 为道具价格单位 分。
“GameOrderNo” 为游戏订单号,可自定义,最大长度为50字符。
onPayFinishedListener是监听支付回调的接口。
单机支付 – 调用
1 2 |
void singlePay(Activity activity, String orderDesc, long moneyInFen, OnSinglePayFinishedListener onSinglePayFinishedListener) |
其中 orderDesc 道具名称,moneyInFen 为道具价格单位 分。
onSinglePayFinishedListener 是监听支付回调的接口。
支付客户端回调 – 接收
网游支付 – 接收
1 2 3 4 5 6 7 |
public interface OnPayFinishedListener {
public void onPaySuccess(PayResult payResult); // 支付成功
public void onPayFail(PayResult payResult); // 支付失败
} |
单机支付- 接收
1 2 3 4 5 6 7 8 |
public interface OnPayFinishedListener {
public void onPaySuccess(PayResult payResult); // 支付成功
public void onPayFail(PayResult payResult); // 支付失败
public void onMobilePay(PayResult payResult); //单机支付回调,运营商支付接口(需自己实现) } |
附回调对象PayResult:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public interface PayResult {
public Boolean getSuccess(); //是否支付成功
public Long getUid(); //用户ID
public String getNick(); //用户昵称
public String getToken(); //用户token
public String getOrderId(); //订单号
public String getOrderDesc(); //道具名称
public Long getMoney(); //道具价格
public String getOutTradeNo(); //游戏自定义订单号 } |
支付服务器端回调–通知游戏服务器
- 在订单支付成功后会立即以 POST 方式回调开发者提供的回调 URL
- 订单号必须保证唯一
- 配置回调地址
- 签名使用 RSA 验证,详细代码参见Zip 包内server.zip目录中的文件,我们已经提供服务器端 Java,PHP,C#,C++ 进行RSA验证的例子,请参考完成。
- 公钥使用上述例子的即可,安全性请参考RSA数字签名原理
- 订单支付失败不会回调
- 订单处理成功,返回字符串success,以PHP为例 echo “success”;即可。失败返回fail字符串。
- ‘重要’在接收到服务器返回通知的时候,必须同时校验buyerid、money 字段,校验由服务端进行编写。
POST回调参数
参数名 |
内容 |
类型 |
备注 |
content |
回调内容 |
String |
以PHP为例,($_POST[‘content’]) |
signType |
签名类型(RSA) |
String |
值固定 RSA |
sign |
签名 |
String |
|
其中 Content 参数,内容以JSON形式给出。
参数名 |
内容 |
类型 |
备注 |
timeStamp |
时间戳 |
String |
|
orderId |
豌豆荚订单id |
String |
|
money |
支付金额 |
String |
单位是(分) |
chargeType |
支付类型 |
String |
ALIPAY:支付宝 SHENZHOUPAY:充值卡 BALANCEPAY:余额 CREDITCARD :信用卡 DEBITCARD:借记卡 |
appKeyId |
appKeyId |
String |
|
buyerId |
购买人的账户id |
String |
|
out_trade_no |
开发者订单号 |
String |
创建订单时候传入的订单号原样返回 |
cardNo |
充值卡id |
String |
只有充值卡充值的时候才不为空 |
游戏服务器在收到回调通知后,应该首先进行签名验证,再进行业务处理。当游戏服务器没有正常返回 success 时,豌豆荚服务器会多次通知游戏服务器,24小时后放弃通知。对于24小时后的订单,可以进入豌豆荚后台发起手动回调。如果是已经处理成功的订单,后续收到的豌豆荚通知,也应该返回 success。
服务器回调联调
如果支付订单后没有收到豌豆荚服务器回调通知,首先请检查:
- 配置的URL是否正确,可在开发者后台里编辑,会立刻生效
- 检查客户端appkey是否正确
- 查看游戏服务器的access log。
- 在开发者后台里查询订单详情中的回调时间
确认以上没有问题后,可以在开发者后台里查询失败订单发起手动回调。
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 下一页
0