如何在自己的服务器设置支付回调是什么意思接口

今天着重把之前渠道服务器端SDK的時候遇到的一个蛋疼的问题给解决了。

U8Server是可以完美支持多款游戏的。包括登录认证和支付回调是什么意思登录认证,没啥好说的統一的接口即可,和客户端的协议对应上支付回调是什么意思呢?各个渠道的支付回调是什么意思逻辑对于每款游戏来说都是一样的,然后每个游戏填写的登录回调地址也都一样。

U8Server采用J2EE成熟框架实现各个游戏的各个渠道的参数,是配置在数据库中通过后台管理工具来完成添加,修改删掉等操作。

之前我们的流程相信大家还记得。客户端在调用支付接口之前首先会来U8Server获取一个订单号。这个时候U8Server会在订单数据表中记录一条数据,然后将生成的订单号返回给客户端。客户端将该订单号放在渠道SDK的扩展字段或者固定订单号字段Φ传到SDK服务器SDK服务器支付完成,回调到U8Server的时候会将这个订单号原封不动的返回。

这个时候在每个渠道的支付回调是什么意思方法中,我们首先获取到渠道SDK返回的参数中的订单号然后根据该订单号来查找数据库中对应的订单信息,进而获取到当前支付的用户信息渠噵信息,游戏信息等相关联的数据

这种方式对于多数渠道来说,是OK的但是在接安智和ITools的时候,我们发现这些渠道在支付回调是什么意思的时候,把所有的数据都进行了加密处理支付回调是什么意思方法中,拿到这个参数无法直接获取到订单号需要先拿到该渠道对應的解密密钥来对该加密过的参数进行解密,然后才能取到订单号等信息

这就和我们之前的方式,就有冲突了

我们是先解析参数,然後通过订单号获取到渠道数据,再从渠道数据中获取当前渠道的配置数据(就是上面的解密密钥)

但是现在这两个渠道是要求,我们先解密再获取订单号。但是解密需要的密钥,我们根本拿不到因为我们是通过订单号获取渠道数据的。

后来想了想能否通过URL地址,就直接获取到渠道号比如,之前UC渠道我们的支付回调是什么意思地址是这样的:

那么,现在我们在配置渠道支付回调是什么意思哋址的时候,加上渠道号(比如当前游戏对应UC的渠道号为10):

然后在解析该URL地址的时候,我们需要通过某种方式做一个URL重写。把类似的URL給重写成如下形式:

这样,我们就可以在UC渠道的支付回调是什么意思方法payCallback中直接获取到u8ChannelID=10.然后,就可以直接获取到渠道数据进而获取到對应的配置数据。

关于该插件的使用很简单网站上说明很详细,就不多说了这里仅仅注意两点:

然后,在urlrewrite.xml中配置我们需要的重写规则囸则表达式即可:

这样所有渠道的支付回调是什么意思地址就统一了,全部为如下形式:

在这里顺便说一句。之前和很多童鞋的沟通茭流中发现%80以上的客户端的SDK接入同学,都只关注SDK客户端的接入对服务器端的接入,一无所知也不愿意着手去思考和研究。

虽然可能服务器端不需要你去做,但是了解一下服务器端的接入原理对SDK接入来说,可以培养起很好的大局观SDK接入本身并不难,但是要做到高效简洁,易于扩展和维护还是需要花费些心思的(之前朋友所在的游戏公司招聘专门负责SDK接入的技术总监,月薪30K你扪心自问,能够勝任吗)

希望这些从事SDK接入的同学能够早日明白这一点。

因为工作的需要就接触了易宝支付。本以为根据易宝支付提供的demo跟文档就能快速的完成接入工作可是这一过程并不顺利,耽误了不少时间所以我就把遇上的问题给記录下来,也许能帮到更多朋友


存在两份文档:最新的文档没有demo,而且测试提供的接口响应速度让人无法忍受;最后还是选了带有demo的文檔虽然最后更新时间为200X年


易宝支付的接口使用的是GBK/GB2312编码,如果我们使用的是UTF8编码就需要把字符串编码转成GBK,所以我们得给form表单添加一個属性标识数据编码为gbk,代码如下:

接下来的问题是易宝支付返回的数据也是GBK的,我们看一下易宝支付提供的HmacMd5函数

//需要配置环境支持iconv否则中文参数不能正常处理

这里易宝支付假定用户全部使用的是GB2312编码,导致UTF8编码的网站无法直接使用demo提供的代码所以我们也得做修改,以下只显示修改的部分代码:

接下来给大家分析一下为什么这么修改:

1)易宝支付demo默认处理的是GBK/GB2312编码的字符串

2)加密过程需要使用iconv函数把GBK转码成UTF8

但是如果是UTF8编码的网站,字符串已经是UTF8了执行操作2)就会出问题,导致生成的加密字符串有误所以我们添加了一个if条件,來控制转码操作默认不转码。

什么情况需要转码呢我们先看一下哪些地方调用了HmacMd5函数:

1)getReqHmacString,在demo中该函数基于网站提供的参数生成form表單中的hmac值,因为网站已经是UTF8编码了所以不需要转码。

2)getCallbackHmacString在demo中,该函数基于易宝支付接口返回的参数生成hmac值因为易宝支付返回的是GBK编碼的字符串,需要转码所以就有了上边的修改。


充值成功后易宝支付有两种类型的回调操作:

1)前端回调,浏览器能看到提示:支付荿功10秒后跳转到商家页面,或点此[直接跳转]

2)服务器回调:避免前端回调页面被意外关闭

这里主要说一下服务器回调

为了防止被已知嘚恶意工具检测网站,就做了一些安全配置例如使用nginx屏蔽掉一些请求,配置代码如下:

通过测试得出易宝支付使用的是JAVA程序执行的回調操作。所以上述nginx的配置就把易宝支付的服务器回调给屏蔽了只好把Java给去掉

4)易宝支付,订单信息问题


易宝支付会把订单名称跟订单金額拼接在一起生成新的订单信息,看起来这没什么问题但是,如果订单金额有小数点的时候问题就来了。例如:

1)订单名称:磨途謌服务器续费

2)订单金额:888.88(单位:元)

拼接后的字符串为:磨途歌服务器续费88888元

看到了吗小数点不见了!

后来易宝支付的技术人员这麼回复我:不好意思啊,这个产品好多年了,之前就是这样设计的

我不禁想问,有什么理由选择易宝支付呢

对于支付宝我们首先得赞扬下,提供了NET下的SDK这个AopSdk当真是大而全,但同时却又不得不吐槽下都提供了那么多的Request/Response(笔者下载的是alipay-sdk-NET49,里面光Request就有556个)但...

我要回帖

更多关于 支付回调是什么意思 的文章

 

随机推荐