支付完成,爱贝多q9儿童手机还重复调用回调通知怎么办?

云接入文档
统计接入文档
1. 常见FAQ
1)&&&&接入星云接入sdk以后,渠道SDK 有更新,是否需要游戏做什么操作来更新SDK?
答:不需要,游戏只需要在平台上重新打包即可。
2)&&&&星云接入SDK有新版本升级后,游戏需要接入更新吗?
答:如果想要使用新版本相关的功能的,建议接入最新版
3)&&&&接入星云接入SDK以后可以直接使用星云统计吗?
答:是的,接入星云接入SDK后,所有通过星云平台打包的渠道都可以直接在星云 官网查看和使用统计。
4)&&&&星云接入和星云其它服务收费吗,怎么收费的?
答:全部免费。
5)&&&&星云中间件服务器端的接入只有一个支付通知接口,有没有登录验证接口?
答:我们登录通知接口默认是关闭的,如果游戏需要接入做登录二次验证,可以加入我们技术支持QQ群: ,我们为您打开通知开关即可。
6)&&&&星云接入sdk提供切换账号功能吗?
答:如游戏中需要有切换账号功能,则实现步骤如下:
&&&&&&&a) 调用IXSDK的退出登录(userLogout)接口;
&&&&&&&b) 在登出的回调方法(onLoginOut())里,游戏需要清除当前玩家的游戏数据,并回到游戏的登录页面;
&&&&&&&c) 在游戏登录界面调用登录(userLogin)接口;
7)&&&&星云是如何处理渠道切换账号功能的?【必须】
答:渠道的切换账号功能大都在浮窗中,这就要求游戏必须在任何时候都能够在收到玩家登录成功的信息后,回到游戏初始登录界面,并将当前用户信息替换为新的用户信息。
&&&&&&&如此,对应的处理步骤如下:
&&&&&&&a) 游戏收到登录成功回调(onLoginSuccess(IXUser));
&&&&&&&b) 游戏需要清除当前玩家的游戏数据,并回到游戏的初始登录页面,重新开始正常的登录成功流程。
8)&&&&为什么游戏会连续调用两次登录,退出,支付接口?
答:检查是否使用了 dispatchKeyEvent 来处理事件响应,但却没有分别处理KeyEvent.ACTION_DOWN 和 KeyEvent.ACTION_UP
9)&&&&支付extraInfo参数是否能使用Json格式?
答:考虑到目前大部分渠道都是使用json格式进行网络协议交互,如果一定要json格式,请对数据进行Base64编码,以防带来不必要的麻烦。
10)&&星云渠道管理可以给每个渠道配置包名,包名可以任意填写或者修改吗?
答:因为几乎所有渠道的参数都是跟包名一致的,所以包名必须根据渠道的要求填写,且不可以随意更改。
2. 接入渠道FAQ
1)&&&&有些渠道要求支付时必须使用在后台配置的支付商品id,这个接入时要如何处理?
答:需要单独设置支付商品ID的渠道有联想、应用汇,酷派,请开发者在调用这三个渠道的支付接口时,将支付商品ID设置为对应的渠道后台分配的商品ID,否则无法支付。
&&&&&&&另外,PPS渠道的支付商品ID必须是一个int值不能是字符串
2)&&&&接入星云接入SDK后打包,发现联想渠道的浮窗工具条没有显示,怎么办?
答:联想工具条显示的条件是:攻略、礼包、论坛三项中至少有一项才显示,而且浮窗工具条是上线以后才有的。
3)&&&&当乐渠道打包后一直提示“系统错误”,是什么情况?
答:需要在当乐后台添加服务器来配置支付回调地址和serverId,serverId由CP自己指定为一个int值,并且,需要从当乐后台下载签名文件给游戏单独签名。
4)&&&&4399 填好渠道参数打包后,提示“登录验证失败”是什么原因?
答:4399有测试模式和正式模式之分,游戏注册后即为测试模式。在此模式下,必须使用4399加白的账号才能进行登录。
5)&&&&4399填好渠道参数打包后,点击支付,页面闪一下,但不显示任何支付方式选择界面,且支付不到帐?
答:4399在测试模式时,所有支付都是模拟支付,调用支付后,不显示支付界面,直接返回支付成功。
&&&&&&&如果测试模式下登录支付都测试通过了,可以通知4399运营人员,将应用的模式改为正式模式,此时才能进行真实的登录和支付测试。
6)&&&&4399渠道在支付页面,调用任何一种支付方式后返回,再调用其他支付方式,提示“充值下单异常…”
答:目前,4399在取消当前支付方式后并没有结束支付,而是允许用户继续选择其他支付方式,但因为当前游戏订单已经在前面的支付方式中使用过,就会出现重复下单的错误提示。
7)&&&&安智渠道的包,从星云打包后下载安装,点击选择支付方式不能显示支付方式陈列页面,是什么原因?
答:安智默认不显示任何支付方式,必须在安智开发者管理后台配置相应的支付方式才能显示。
8)&&&&搜狗,OPPO支付界面显示商品名称和商品数量错误。
答:搜狗,OPPO在支付时,是将商品数量和商品名称拼接到一起的方式来作为商品名称显示的。
&&&&&&&如需显示1000元宝,则需要在支付参数 goodName中传入 "name=元宝&count=1000"。
&&&&&&&如需显示 1件披风,则需要在支付参数 goodName中传入 "name=件披风&count=1",以此类推。
9)&&&&HTC 登录提示:验证失败。
答:请检查在星云后台填写的HTCJoloPublicKey是否正确。
10)&&HTC支付后未收到支付通知。
答:需要把星云提供的CP公钥填写到HTC后台,否则支付通知会校验失败
11)&&N多渠道调用登录提示“正在检测N多游戏服务框架”。
答:N多渠道的登录和支付都是在Nduo游戏服务框架中完成的,调用登录接口时,会先检测当前手机中是否有N多游戏服务框架,如果没有,用户必须安装才能正常登录和支付
12)&&泡椒登录完成后崩溃,Log显示找不到资源id。
答:泡椒渠道要求游戏Application中的android:label必须是资源ID,而不能直接是固定的字符串。
13)&&N多渠道支付通知内容为空是什么原因?
答:很可能是因为N多渠道平台检测参数错误,所以发了空的支付通知。
14)&&使用星云渠道的支付,有的支付项会出现下单失败是什么原因?
答:如果是开发者自己申请的爱贝支付参数,请检测客户端传入的商品ID(即wareid)是否在爱贝后台都存在且支付方式为“消费型-应用传入价格”;
&&&&&&&否则请联系星云接入支持,QQ群:或发送邮件到
签名名称*:
签名文件*:
密钥密码(storepass)*:
密码别名(alias)*:
别名密码(keypass)*:爱贝客户端接入指南_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
爱贝客户端接入指南
爱​贝​客​户​端​接​入​指​南
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢微信网页支付 有通知返回么_百度知道
微信网页支付 有通知返回么
提问者采纳
1.支付平台成功后一般有两种回调方式,一种是你说的notify_url,这个是支付平台成功后直接进行页面调转的地址2.除了第1种方式以外,支付平台一般还提供直接后台通知的方式adviceURL(名字每个平台各有不同),意思就是支付平台成功后,会通过后台直接调用你的某个响应页面,进行完成支付结果回馈操作,这个是纯后台操作,和用户的前端界面没有任何关系3.有了以上两种形式,你的页面就可以根据实际情况编写响应了嘛
电子产品技术支持
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁网游支付服务
1.流程介绍& & & & & & & & & & & & & & & & & & & & & & &1.应用调用应用服务器进行下单;2.应用调用360SDK支付接口;3.360SDK展示支付页面,引导用户完成支付流程;a.若调用接口时指定金额,则显示固定金额支付界面; b.若调用接口时不指定金额,则显示不固定金额的支付界面;4.支付结束或退出360SDK支付客户端界面后,360SDK客户端会返回支付结果给应用客户端的支付模块;5.支付成功后,360服务器回调应用服务器上的通知接口,通知支付结果;6.&(可选) 应用服务器调用360服务器端订单确认接口,验证支付通知的合法性;2.接口介绍2.1支付接口【客户端调用】(必接)功能说明:应用调用360SDK支付接口时,360SDK弹出支付选择界面。用户在界面上完成支付。&关于应用方订单号的问题:应用方需要生成自己的订单号app_order_id,应用订单号不能重复提交,并且一个应用订单不管是否支付成功,都只能支付一次。这样做是为了避免重复支付。通知应用方加钱时,会返回应用订单号, 同时提供360订单号。&Access token由于与当前登录用户id绑定,因此可以加强支付安全性。但要注意token的时间期限(有效期为10小时)。过期后调用支付接口会失败。游戏可以引导用户重新登录.&接口示例:注意:1、 必选参数不能为空, 不能为0,否则支付失败。& &2、参数名,以ProtocolKeys中定义的常量为准。&/**
&&&&&*&使用360SDK的支付接口
&&&&&*&@param&isLandScape&是否横屏显示支付界面
&&&&&*&@param&isFixed&是否定额支付
protected&void&doSdkPay(final&boolean&isLandScape,&final&boolean&isFixed)&{
&&&&&&&&if(!isAccessTokenValid)&{
&&&&&&&&&&&&Toast.makeText(SdkUserBaseActivity.this,&R.string.access_token_invalid,&Toast.LENGTH_SHORT).show();
&&&&&&&&&&&&
&&&&&&&&if(!isQTValid)&{
&&&&&&&&&&&&Toast.makeText(SdkUserBaseActivity.this,&R.string.qt_invalid,&Toast.LENGTH_SHORT).show();
&&&&&&&&&&&&
&&&&&&&&//&支付基础参数
&&&&&&&&Intent&intent&=&getPayIntent(isLandScape,&isFixed);
&&&&&&&&//&必需参数,使用360SDK的支付模块。
&&&&&&&&intent.putExtra(ProtocolKeys.FUNCTION_CODE,&ProtocolConfigs.FUNC_CODE_PAY);
&&&&&&&&//&可选参数,登录界面的背景图片路径,必须是本地图片路径
&&&&&&&&intent.putExtra(ProtocolKeys.UI_BACKGROUND_PICTRUE,&&&);
&&&&&&&&Matrix.invokeActivity(this,&intent,&mPayCallback);
&&&&&*&生成调用360SDK支付接口基础参数的Intent
&&&&&*&@param&isLandScape&是否横屏显示登录界面
&&&&&*&@param&isFixed&&&&&是否定额支付
&&&&&*&@return&Intent
&&&&protected&Intent&getPayIntent(boolean&isLandScape,&boolean&isFixed)&{
&&&&&&&&Bundle&bundle&=&new&Bundle();
&&&&&&&&QihooPayInfo&pay&=&getQihooPayInfo(isFixed);
&&&&&&&&//&界面相关参数,360SDK界面是否以横屏显示。
&&&&&&&&bundle.putBoolean(ProtocolKeys.IS_SCREEN_ORIENTATION_LANDSCAPE,&isLandScape);
&&&&&&&&//&可选参数,登录界面的背景图片路径,必须是本地图片路径
&&&&&&&&bundle.putString(ProtocolKeys.UI_BACKGROUND_PICTRUE,&&&);
&&&&&&&&//&***&以下非界面相关参数&***
&&&&&&&&//&设置QihooPay中的参数。
&&&&&&&&//&必需参数,用户access&token,要使用注意过期和刷新问题,最大64字符。
&&&&&&&&bundle.putString(ProtocolKeys.ACCESS_TOKEN,&pay.getAccessToken());
&&&&&&&&//&必需参数,360账号id。
&&&&&&&&bundle.putString(ProtocolKeys.QIHOO_USER_ID,&pay.getQihooUserId());
&&&&&&&&//&必需参数,所购买商品金额,&以分为单位。金额大于等于100分,360SDK运行定额支付流程;&金额数为0,360SDK运行不定
&&&&&&&&额支付流程。
&&&&&&&&bundle.putString(ProtocolKeys.AMOUNT,&pay.getMoneyAmount());
&&&&&&&&//&必需参数,人民币与游戏充值币的默认比例,例如2,代表1元人民币可以兑换2个游戏币,整数。
&&&&&&&&bundle.putString(ProtocolKeys.RATE,&pay.getExchangeRate());
&&&&&&&&//&必需参数,所购买商品名称,应用指定,建议中文,最大10个中文字。
&&&&&&&&bundle.putString(ProtocolKeys.PRODUCT_NAME,&pay.getProductName());
&&&&&&&&//&必需参数,购买商品的商品id,应用指定,最大16字符。
&&&&&&&&bundle.putString(ProtocolKeys.PRODUCT_ID,&pay.getProductId());
&&&&&&&&//&必需参数,应用方提供的支付结果通知uri,最大255字符。360服务器将把支付接口回调给该uri,具体协议请查看文档中,
&&&&&&&&支付结果通知接口–应用服务器提供接口。
&&&&&&&&bundle.putString(ProtocolKeys.NOTIFY_URI,&pay.getNotifyUri());
&&&&&&&&//&必需参数,游戏或应用名称,最大16中文字。
&&&&&&&&bundle.putString(ProtocolKeys.APP_NAME,&pay.getAppName());
&&&&&&&&//&必需参数,应用内的用户名,如游戏角色名。&若应用内绑定360账号和应用账号,则可用360用户名,最大16中文字。(充
&&&&&&&&值不分区服,充到统一的用户账户,各区服角色均可使用)。
&&&&&&&&bundle.putString(ProtocolKeys.APP_USER_NAME,&pay.getAppUserName());
&&&&&&&&//&必需参数,应用内的用户id。
&&&&&&&&//&若应用内绑定360账号和应用账号,充值不分区服,充到统一的用户账户,各区服角色均可使用,则可用360用户ID最大32
&&&&&&&&字符。
&&&&&&&&bundle.putString(ProtocolKeys.APP_USER_ID,&pay.getAppUserId());
&&&&&&&&//&必需参数,应用订单号,应用内必须唯一,最大32字符。
&&&&&&&&bundle.putString(ProtocolKeys.APP_ORDER_ID,&pay.getAppOrderId());
&&&&&&&&//&可选参数,应用扩展信息1,原样返回,最大255字符。
&&&&&&&&bundle.putString(ProtocolKeys.APP_EXT_1,&pay.getAppExt1());
&&&&&&&&//&可选参数,应用扩展信息2,原样返回,最大255字符。
&&&&&&&&bundle.putString(ProtocolKeys.APP_EXT_2,&pay.getAppExt2());
&&&&&&&&Intent&intent&=&new&Intent(this,&ContainerActivity.class);
&&&&&&&&intent.putExtras(bundle);
&&&&&&&&return&
&&&&}callback的 json数据格式:成功返回{error_code:&0,&error_msg:&&支付成功&,&content:&&}失败返回{error_code:&1,&error_msg:&&支付失败&,&content:&&}取消返回{error_code:&-1,&error_msg:&&支付取消&,&content:&&}支付正在进行{error_code:&-2,&error_msg:&&正在进行&,&content:&&}access_token失效{error_code:&4010201,&error_msg:&&&token已失效&,&content:&&}QT失效{error_code:&4009911,&error_msg:&&&登录已失效&,&content:&&}callback示例:2.2支付结果通知接口–应用服务器提供接口, 由360服务器回调(必接)应用客户端调用支付接口时, 需指定支付结果的通知回调地址notify_uri. 支付完成后, 360服务器会把支付结果以GET方式通知到此地址 (建议应用服务端接口同时支持GET和POST). 应用接收验证参数后, 给用户做游戏内充值.&应用服务端通知接口在接收到通知消息后, 需回应ok(仅返回小写ok这两个字母,不要有其它输出), 表示通知已经接收. 如果回应其他值或者不回应, 则被认为通知失败, 360会尝试多次通知. 这个机制用来避免掉单。&应用应做好接收到多次通知的准备, 防止多次加钱. 同时, 需要特别注意的是, 回应的ok表示应用已经正常接到消息, 无需继续发送通知. 它不表示订单成功与否, 或者应用处理成功与否. 对于重复的通知, 应用可能发现订单已经成功处理完毕, 无需继续处理, 也要返回ok(仅返回小写ok这两个字母,不要有其它输出). 否则, 360会认为未成功通知, 会继续发送通知.支付结果通知的参数如下:参数必选参数类型最大长度参数说明是否参与签名app_keyYvarchar32应用app keyYproduct_idYvarchar36应用自定义的商品idYamountYint unsigned11总价,以分为单位Yapp_uidYvarchar50应用分配给用户的id Yapp_ext1Nvarchar255应用扩展信息1原样返回Yapp_ext2Nvarchar255应用扩展信息2原样返回Yuser_idYbigint unsigned20360账号idYorder_idYbigint unsigned20360返回的支付订单号Ygateway_flagYvarchar16如果支付返回成功,返回success应用需要确认是success才给用户加钱Ysign_typeYvarchar8定值 md5Yapp_order_idNvarchar64应用订单号支付请求时传递,原样返回Ysign_returnYvarchar32应用回传给订单核实接口的参数不加入签名校验计算NsignYvarchar32签名N&应用接收到支付平台回调的请求,参见附录的签名算法对参数进行签名,然后和平台传递的签名sign比较,从而校验平台请求的合法性.&通知消息样例:order_id=5678901&app_key=abcdefghijklmnopqrstuv&product_id=p1&amount=101&app_uid=&
app_ext1=XXX&app_order_id=order1234&user_id=&sign_type=md5&gateway_flag=success&sign=xxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx&sign_return=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&样例的签名字段排列 (列出来仅供参考, 请根据实际参数情况用程序排序产生, 不要写死在程序里)amount,&app_ext1,&app_key,&app_order_id,&app_uid,&gateway_flag,&order_id,&product_id,&sign_type,&user_id样例的签名串101#XXX#abcdefghijklmnopqrstuv#order89#success##md5#987654
321#应用app_secret2.3订单核实接口– 服务器端接口, 应用服务器调用(可选)1. 验证接口地址为: 2. 为了安全起见,验证参数不需要传client_id,client_secret参数,如果传了服务端会报错3. 需要计算签名&为了防止伪造的支付成功通知, 应用可以使用本接口做通知数据的校验.把支付结果通知接口(4.2.2节)收到的通知消息里的参数, 计算签名后调用接口, 即可校验数据是否正确.&接口地址:/pay/order_verify.json?参数参数说明:参数 &&必选参数说明app_keyY应用 app keyproduct_idY应用自定义的商品 idamountY总价,单位:分app_uidY应用分配给用户的 idorder_idY360 支付订单号app_order_idN应用订单号 下单时若指定验证时也要指定app_ext1N应用扩展信息 1app_ext2N应用扩展信息 2is_smsN是否短信支付bank_codeN支付方式pay_extN扩展信息sign_typeY当前仅支持 md5sign_returnY应用传给订单核实接口的参数 sign_returnsignY签名(计算方法参考附录 6.1 节,本表格中除 sign 以外的所有参数均参与签名)参数均来自应用加钱接口收到的支付通知消息, 原样提供即可。&如果参数提供正确, 订单核实接口返回为json格式数据.&验证成功返回{&ret&:&verified&}验证不成功返回{&ret&:&{错误信息}&}&返回结果中可能的错误信息包括错误信息 &错误说明order not exists订单不存在product_id not match订单验证传入的 product_id 和下单时传入的 product_id 不一致amount not match验证金额与下单时金额不一致user_id not match验证 360 用户 id 和下单时 360 用户 id 不一致bank_code not match验证支付方式和下单时支付方式不一致
以上信息是否帮您解决问题?
为了我们更有效的优化帮助文档,以及针对性的改善我们的服务,我们很需要您进一步的反馈信息:
页面内容不全面,无法找到我想找的问题
页面内容更新不及时
文档叙述不够清晰,缺乏足够引导
平台系统或功能过于复杂在游戏中加入支付 SDK : 豌豆荚开发者中心
在游戏中加入支付 SDK
配置游戏服务器端回调地址URL
游戏客户端使用申请好的Appkey_id,secretkey
游戏客户端使用doLogin方法调用豌豆荚登录
登录成功(onSuccess)后,游戏客户端提交用户信息(uid,nick,token)到游戏服务器
游戏服务器提交uid,token到豌豆荚服务器进行验证,验证通过后游戏完成登录
游戏客户端创建订单,设置游戏订单号(order.out_trade_no),发起支付(pay)
玩家完成支付,返回游戏客户端
只有支付成功的订单,豌豆荚服务器通知游戏服务器回调地址,包含order.out_trade_no
游戏服务器端验证回调信息中的签名,使用RsaTest项目中的公钥既可,验证通过后发放游戏道给游戏客户端并返回success字符串,处理失败返回fail字符串
游戏客户端开始使用道具
复制 wdjpayplugin.jar到游戏项目中的libs目录,复制 assets_wdj347.apk 到 assets 目录中,按照Demo提供的方法调用接口既可。
以下是集成 SDK 时您特别需要注意的问题:
集成 SDK 中有任何问题,请工程师加入豌豆荚 SDK 技术支持群
包名的命名原则为:公版渠道包名 + 后缀「.wdj」,如 com.yourgame.wdj
支付后发货后回调的流程为:「用户支付成功」-「CP 服务器接收豌豆荚服务器回调」-「发送成功,返回success,不成功回fail,等待下次回调」,严格禁止未发货即响应回调的行为,这也会直接导致后续的财务结算异常
每个 Appkey 仅能用于一个游戏。如果有多个游戏需要嵌入 SDK,请分别为每个游戏申请单独的 Appkey 及 ID,否则会导致登陆及支付失败。
项目请设置AndroidManifest.xml 使用 android:minSdkVersion=+ android:targetSdkVersion=+编译,能够在Android2.3上运行。
请仔细确认部分的所需文件。
请确保调用SDK方法和处理回调方法在主线程中进行,。
SDK 初始化
在 onCreate 方法里调用 PayConfig.init(this, appkey_id, secretkey) (其中 appkey_id 为您申请的支付 ID, secretkey 为安全密钥),完成支付 SDK 的初始化。
[注] 此步骤必须在启动游戏的时候调用,否则后面任何请求都会出现异常。
豌豆荚账户接口
接口用法细节请参考 PayDemo 例子代码
账户接口定义:
public interface WandouAccount {
// 默认登录接口
public void doLogin(Activity act, LoginCallBack callback);
// 注销登录,callback 参数已经废弃,不会有回调,请传入 null
public void doLogout(Context appContext, LoginCallBack callback);
// 切换账户
public void reLogin(Context appContext, LoginCallBack callback);
调用方需要实现 LoginCallBack 接口,当登录/注册成功时调用该回调方法:
public interface LoginCallBack {
// type==3 正常登录;type==4 新注册
public void onSuccess(User user, int type);
public void onError(int returnCode, String info);
举例:登录
account.doLogin(PayUnity.this, new LoginCallBack() {
public void onSuccess(User arg0, int arg1) {
//登录成功
public void onError(int arg0, String arg1) {
// 请不要在这里再次触发doLogin登录,会产生错误。
// 如果用户放弃登录,回到游戏界面后,应该通过点击游戏界面中的按钮重新登录。
举例:切换账户
account.reLogin(PayUnity.this, new LoginCallBack() {
public void onSuccess(User arg0, int arg1) {
public void onError(int arg0, String arg1) {
// 请不要在这里再次触发doLogin登录,会产生错误。
// 如果用户放弃登录,回到游戏界面后,应该通过点击游戏界面中的按钮重新登录。
在游戏初始化界面提供 进入游戏 的按钮调用 doLogin 实现触发登录。同时在进入这个界面(onCreate)时也可以主动调用一次doLogin 方法。
登录信息服务器端验证
方法:GET,大小写敏感如果 token 有效,则返回字符串 true ,无效则返回 false
编码:UTF-8
登录账户 uid
user.getUid()
登录账户验证信息
user.getToken()
游戏AppKey_id,数字类型
// 验证接口
String uidCheckUrl = &/api/uid/check&;
// 生成验证连接(GET)方式 需要将参数 url 转码
String url=uidCheckUrl+&?uid=&+user.getUid()+&&token=&+ URLEncoder.encode(user.getToken())+&&appkey_id=&+appkey_
备注:请使用 GET 方式访问接口,token有效期在15分钟以内。
如果验证时返回false,请务必提供原始token内容和uid给我们协助调查。
初始化订单
WandouOrder order =new WandouOrder(String subject, String desc, Long money);
传入开发者订单号
order.setOut_trade_no(“订单号”);
其中订单号由开发者自己定义,长度为 50 个字符,
必须填写,如「梦想海贼王」,也就是所谓 order name
必须填写,不超过7个汉字长度,如「1000元宝」
单位是“分”
out_trade_no
开发者的订单号
初始化支付实例
WandouPay wandoupay=new WandouPayImpl();
wandoupay.pay(Activity act,WandouOrderorder,PayCallBack call);
wandoupay.pay(PayUnity.this, order, new PayCallBack() {
public void onSuccess(User arg0, WandouOrder arg1) {
// 成功逻辑
public void onError(User arg0, WandouOrder arg1) {
// 失败逻辑
推荐直接使用支付宝方式测试,最低支持1分钱。不提供测试环境、测试账户。
服务器回调
在订单支付成功后会立即以 POST 方式回调开发者提供的回调 URL
签名使用 RSA 验证 ,详细代码参见内server目录中的文件,我们已经提供服务器端 Java,PHP,C#,C++ 进行RSA验证的例子,请参考完成。
公钥使用上述例子的即可,安全性请参考RSA数字签名原理
订单支付失败不会回调
订单处理成功,返回字符串success, 以PHP为例 echo "success"; 即可。失败返回fail字符串。
POST回调参数
以PHP为例,($_POST['content'])
签名类型(RSA)
值固定 RSA
其中 Content 参数,内容以JSON形式给出。
豌豆荚订单id
单位是(分)
chargeType
ALIPAY:支付宝
SHENZHOUPAY:充值卡
BALANCEPAY:余额
CREDITCARD : 信用卡
DEBITCARD:借记卡
购买人的账户id
out_trade_no
开发者订单号
创建订单时候传入的订单号原样返回
只有充值卡充值的时候才不为空
游戏服务器在收到回调通知后,应该首先进行签名验证,再进行业务处理。当游戏服务器没有正常返回 success 时,豌豆荚服务器会多次通知游戏服务器,24小时后放弃通知。对于24小时后的订单,可以进入豌豆荚后台发起手动回调。如果是已经处理成功的订单,后续收到的豌豆荚通知,也应该返回 success。
服务器回调联调
如果支付订单后没有收到豌豆荚服务器回调通知,首先请检查:
配置的URL是否正确,可在里编辑,会立刻生效
检查客户端appkey是否正确
查看游戏服务器的access log。
在里查询订单详情中的回调时间
确认以上没有问题后,可以在里查询失败订单发起手动回调。
进入,点击 联运游戏,之后可以批量查询订单详情。
提示 Make sure you call PayConfig.init() in onCreate(Activity) correctly.
原因:因为没有在 Activity 的 onCreate 方法中初始化支付 SDK。请在 onCreate 方法里调用 PayConfig.init(this,appkey_id),完成支付SDK的初始化。
提示:java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare
原因:没有在ui主线程调用接口,可以使用Activity.runOnUiThread方法调用。
问题:希望豌豆荚服务器IP列表
解答: 60.28.207.131-60.28.207.158
125.39.223.131-125.39.223.158
问题:横竖屏幕设置
解答:如果游戏是横屏的,豌豆荚收银台会自动为横屏。如果游戏是竖屏,则收银台是竖屏。只有游戏能够自动横竖屏变化,收银台才可以随着变化。
问题:透传字段,自定义字段?
解答:直接用使用out_trade_no 字段,最多50个字符,可空可重复。如果数据放不下,请在自己服务器存储信息。
问题:已经返回success,还有豌豆荚回调通知?
解答:必须在2s内返回,超时后,豌豆荚会不断通知,24小时后放弃。
问题:登录验证的作用?
解答:验证玩家身份,确保玩家道具等数据安全。
问题:createRole在哪里调用?一定要调用吗?
解答:玩家登陆后创建角色是调用。可选调用,不要求。
问题:编译后assets中的apk会被自动删除?
解答:如果遇到这个问题,请在编译脚本(bat或sh)或build.xml(参考android ant手册)中增加复制apk到assets目录的命令。
问题:没有单独的RSA秘钥?
解答:没有单独的。全部游戏使用均使用zip包中例子的一个RSA公钥。我们已经提供服务器端 Java,PHP,C#,C++ 进行RSA验证的例子,请参考完成。
问题:部分玩家反馈登录不了?
解答:如果只是少数玩家一直反馈登录不了,其他玩家却可以。可以先确定一下玩家登录时是否正确收到token,如果没有则建议玩家切换不同的网络再尝试。经我们调查在部分地区网络DNS解析存在问题。
问题:测试反馈游戏order name 不正确?
解答:请参考 ,传入正确的subject 和desc 参数。
游戏自己维护升级,在后台上传新版后,可以找到下载链接。
目前已经确认支持 Adobe Air 、Unity3D 、Cocos2d-x 等游戏引擎。
需要打包的资源库如下:
wdjpayplugin.jar 豌豆荚支付 jar 包到 libs 目录(不可缺)
assets_wdj*.apk 到游戏 assets 目录(不可缺),* 号为版本数值
请确保在 Android UI 主线程中调用 SDK 的接口, 必要时可以使用Activity.runOnUiThread方法。
AndroidManifest.xml 声明部分
-keep class **.R
-keep class **.R$* {*;}
-keep class com.alipay.android.app.** {*;}
-keep class com.wandoujia.** { *;}
-keep monsware.cwac.parcel.** { *;}
-keepattributes InnerClasses
Adobe Air 接入官方文档
Android主线程调用方法例子
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
// 这样确保是在主线程调用,也可以处理UI更新
//((TextView) findViewById(id)).setText(str);
如果您需要更多帮助,请在此提交,我们将在 1 个工作日内回复。
获得帮助或提供反馈
邮件支持:
企业 QQ:400 652 8705

我要回帖

更多关于 爱贝国际少儿英语 的文章

 

随机推荐