前言

游戏服务器的玩家充值流程,如果通过google商店或者app store进行充值的话,需要实现回调支付地址。玩家充值成功以后,app store或者google商店会向回调地址传递参数,验证玩家充值,通知游戏服务器给玩家发送钻石或者礼包,并保存消费记录。

易接sdk

小编使用的易接SDK是一套规范、统一的接口,具有下列特点:

通过易接SDK的接口,可以使用易接工具合成不同的渠道包,不需要阅读渠道SDK文档或调试渠道接口;

易接SDK(Android)支持多种平台,包括:Java、cocos、flashair、Unity3D,JS,lua,极大程度的满足游戏需求;

易接SDK(IOS越狱)支持多种平台,包括:Object-C、Cocos C++、Unity3D,极大程度的满足游戏需求。

消费同步接口

消费记录同步接口消费记录同步是由CP服务器实现的,接收用户付费结果的回调接口。当充值成功时,易接后台的状态是等待同步,并将信息传递给CP服务器,CP服务器做相应的处理后(签名验证,消费记录的存储,向游戏服务器发送充值成功的请求等),返回SUCCESS,易接后台的状态变成同步成功。其流程图如下:

php实现支付接口签名验证

同步接口

目前易接服务器向CP服务器通知支付成功情况以及接收CP服务器确认是一个HTTP接口。由CP服务器提供通知URL,易接服务器会在需要同步结果时(包括重新同步)主动调用CP服务器提供的通知URL。

同步接口的基本形式如下:

参数的具体含义可查阅:

同步参数签名

签名可以让CP服务器确认得到的数据来自于支付服务器而不是恶意第三方。签名方法为共享密钥+MD5方式,算法如下:

共享密钥:

双方共享一个字符串形的密钥

待签名串:

协议参数(对支付服务器是构成URL的参数,对CP服务器是接收的请求参数)中除了sign以外的所有参数,

按字典序由小到大排列 参数名=值,并在中间加入 “&”,构成比如如下的子串:

app=1234567890ABCDEF&cbi=CBI123456&ct=1376578903&fee=100&pt=1376577801&sdk=09CE2B99C22E6D06&ssid=123456&st=1&tcd=137657AVDEDFS&uid=1234&ver=1

支付服务器方签名:

签名=MD5(待签名串+共享密钥)

然后构成

CP服务器同步URL+待签名串+”&sign=”+签名

来进行请求

CP服务器验证:

待验证的签名=MD5(待签名串+共享密钥)

然后把“待验证的签名”和sign的子串进行比较,如果相同就说明一致。

同步失败的重传机制

无论是HTTP连接失败还是CP服务器端没有返回”SUCCESS”,支付服务器都会负责进行重传 ,服务器会按照一定的时间间隔重传同步记录。

PHP实现

public function sdkValid()

{

$request = array();

$request["app"] = $_GET['app'];

$request["cbi"] = $_GET['cbi'];

$request["ct"] = $_GET['ct'];

$request["fee"] = $_GET['fee'];

$request["pt"] = $_GET['pt'];

$request["sdk"] = $_GET['sdk'];

$request["ssid"] = $_GET['ssid'];

$request["st"] = $_GET['st'];

$request["tcd"] = $_GET['tcd'];

$request["uid"] = $_GET['uid'];

$request["ver"] = $_GET['ver'];

$sign = $_GET['sign'];

$tmpStr = $this->formatQueryMap($request);

$tmpStr = md5($tmpStr . C('SDK'));

if ($tmpStr == $sign) {

$chargeModel = new ChargeModel();

$chargeExist = $chargeModel->getCharge($request["tcd"]);

if ($chargeExist) {

echo "SUCCESS";

exit;

} else {

$Info = explode("_", $request["cbi"]);

$rows = $chargeModel->insertCharge($Info[0], $request["ct"], $request["fee"], $request["pt"],$request["ssid"], $request["st"], $request["tcd"], $request["uid"],$request["ver"], $Info[1]);

if ($rows) {

echo "SUCCESS";

exit;

} else {

echo "FAILED";

exit;

}

}

} else {

echo "FAILED";

exit;

}

}

private function formatQueryMap($paraMap)

{

$buff = "";

ksort($paraMap);

foreach ($paraMap as $k => $v) {

$buff .= $k . "=" . $v . "&";

}

$reqPar = "";

if (strlen($buff) > 0) {

$reqPar = substr($buff, 0, strlen($buff) - 1);

}

return $reqPar;

}

php支付接口签名,php实现支付接口签名验证相关推荐

  1. java 接口 签名机制_java – 当接口A在其方法签名中定义接口B时

    -如何限制A的实现在方法签名中使用B的某个实现? 用例 这是一个Unit接口和两个实现它的枚举: public interface Unit { ... } public enum ForceUnit ...

  2. API 接口签名验签

    目录 一.为什么需要 API 接口签名 二.API 接口签名验签实现机制 一.为什么需要 API 接口签名 对外开放的 API 接口都会面临一些安全问题,例如伪装攻击.篡改攻击.重放攻击以及数据信息泄 ...

  3. 你连对外接口签名都不会知道?有时间还是要学习学习。

    背景 周三,18:00. 小明扭了扭微微发酸的脖子,揉了揉盯着屏幕有些干涩的眼睛. 终于忙完了,临近下班,整个人心也变得放松起来. "对接方需要我们提供新的服务,下周二上线,需求我发你了,很 ...

  4. abc云支付php,凉秋易支付,免签约支付平台,彩虹易支付,abc云支付云钱包,云支付,云结算,支付接口,支付营销,易支付,微信支付,支付宝,QQ钱包,个人支付接口,免签支付接口...

    支付接口介绍 使用此接口可以实现支付宝.QQ钱包.微信支付与财付通的即时到账,免签约,无需企业认证.接口API地址是:http://pay.lqan.cn/ 本文阅读对象:商户系统(在线购物平台.人工 ...

  5. php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)

    微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中. 内容有:微信摇一摇接口/微信多客服接口/微信支付接口/微信红包接口/微信卡券接口/微信小店接口/JSAPI <?php clas ...

  6. asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付

    asp 支付宝 企业版 接口 支持网银接口 ,网银直接支付 只是多了一个defalutbank的参数.具体看 open.alipay.com <% ' 类名:AlipaySubmit ' 功能: ...

  7. java后台实现支付宝支付接口、支付宝订单查询接口 前端为APP

    最近项目APP需要接入微信.支付宝支付功能,在分配开发任务时,听说微信支付接口比支付宝支付接口要难实现,由于我开发经验不是那么丰富(现工作经验1年半)且未接触过支付接口开发,组里刚好又有支付接口的老司 ...

  8. java 银行支付接口_cbcPayment 建设银行Java支付接口详细说明文档dsdsdds - 下载 - 搜珍网...

    中国建设银行网上商户接口多操作系统版本V1.5/1.商户支付接口/0.商户开发手册.doc 中国建设银行网上商户接口多操作系统版本V1.5/1.商户支付接口/1.商户接口规范.doc 中国建设银行网上 ...

  9. 微信支付接口(公众号支付)+微信支付回调函数 附代码

    前段时间做微信支付,微信浏览器填写金额商品名之后提交跳转付款页面确认然后返回界面判断,今天来详细说下 国际惯例先贴代码 mcontroller.java public void wxpay() {if ...

最新文章

  1. 一个类可以实现多个接口但是只能实现一个类
  2. 闪电网络真的是比特币最好的扩容解决方案吗?
  3. ASP.NET中利用DataList实现图片无缝滚动
  4. 服务器升级中不能修改,windows10下更新服务器为何改不了了
  5. Redis Master/Slave 实践
  6. 图像处理之基础---仿射变换
  7. 转载 foreach比递归效率低
  8. MYSQ--SHOW PROFILE Syntax and useing
  9. 为什么用Ghost备份后会有两个文件?
  10. h5传奇 cqgmb.php,魔兽世界怀旧服狂暴战bwl最新WA字符串集合
  11. oracle 二进制运算符,Oracle UNION运算符
  12. 微信小程序教学第三章(含视频):小程序中级实战教程:列表-静态页面制作...
  13. 暗黑系博客主题,欢迎访问与魔改,博客网站有搭建教程
  14. 电子通信计算机行业分类,电子信息产业行业分类目录
  15. Vue3源码之createApp
  16. python写一个定时关机软件
  17. 交换机和路由器技术-28-OSPF的NSSA区域
  18. Java—计算长方体、四棱锥的表面积和体积
  19. 5g无线图传信号测试软件,不到千元的5G无线图传?小试致迅CineEye
  20. kubeadm,kubevip,containerd部署高可用的kubernetes集群

热门文章

  1. 乐鑫发布 ESP-IDF v5.0
  2. 2021年秋招面经分享·乐鑫【数字IC设计工程师】
  3. macbarcode软件_条形码生成器 for mac-条形码生成器 mac版下载V17.0__西西软件下载
  4. 刚做测试工作一年的时候,我是怎样的?
  5. 国内外做视频会议比较牛的公司有哪些?
  6. 原生ajax crossO,总鳍鱼Crossopterygian
  7. 用pdfmake生成pdf中文文档
  8. 主流商业智能(BI)工具的比较(二):Power BI与Domo
  9. DFIG matlab 建模,matlab怎么搭建dfig
  10. 四级单词pdf_2018年12月大学英语四级真题及答案解析(完整三套可打印)