腾讯开放平台的接入是非常麻烦的,文档各种不清不楚的,有些东西文档根本没有写,如果不跟腾讯的技术人员对接的话,你都可能做不出来。虽然他们也没有帮到什么

申请过程就不赘述(申请过程很蛋疼),直接开始接入。根据项目需求,我采用的是【米大师道具直购模式】,官方文档,这了提一点,在后面腾讯客服发了个新的米大师文档,这个文档才比较详细。

一、下单

下单有两种,一种服务器下单,一种APP下单,我采用的服务器下单

建议使用官方的SDK来进行签名,自己来签名可能会失败(我水平太菜)SDK下载

//获取订单信息

...

//必填 APP传递

$data['openid'] = $_POST['openid'];

//必填 APP传递

$data['openkey'] = $_POST['openkey'];

//应用在米大师注册的应用ID(对应客户端接口中的offerid),String类型

$data['appid'] = '123456789';

$data['ts'] = time();

//平台标识信息:平台-注册渠道-版本-安装渠道-业务自定义(自定义),最大150字节。(自定义部分不能包含单引号 ' < > ( ) + | & = * ^-等特殊字符,支持下划线_)

$data['pf'] = 'qq_m_qq-2001-android-2011-xxxx';

$data['pfkey'] = 'ASDFGHJ123456';

//游戏服务器大区id,游戏不分大区则默认zoneId ="1",String类型。如过应用选择支持角色,则角色ID接在分区ID号后用"_"连接。

$data['zoneid'] = '1';

//使用x*p*num的格式,x表示物品ID,p表示单价(以Q点为单位,1Q币=10Q点,单价的制定需遵循腾讯定价规范),num表示默认的购买数量。

$data['payitem'] = '1*10*1';

//商品描述

$data['goodsmeta'] = '充值*金币充值';

//商品图片

$data['goodsurl'] = 'http://www.xxx.com/img.jpg';

//(可选)道具总价格。(amt必须等于所有物品:单价*建议数量的总和 单位为1Q点)

$data['amt'] = '10';

//可选 用户可购买的道具数量的最大值

//$data['max_num'] = '';

//(可选)1表示用户不可以修改物品数量,2 表示用户可以选择购买物品的数量。默 认2(注:批量购买的时候,必须等于1)

$data['appmode'] = '1';

//如果你不传的话回调里面也会没有,传了回调会加上此参数,并改名为【appmeta】,且格式为【商户自己定义的参数*支付方式*平台渠道】

$data['app_metadata'] = '订单类型*订单编号';

$data['userip'] = '127.0.0.1';

$data['format'] = 'json';

//签名,这里直接调用SDK的方法,不要自己去写,会有很多坑,我之前就是不想用SDK想自己写结果按照文档流程签名死活不对,这里注意 秘钥后面跟了一个【&】

$data['sig'] = SnsSigCheck::makeSig('GET','/v3/r/mpay/buy_goods_m',$data,"你的秘钥&");

//设置cookie,微信与QQ的不一样,我也不知道为什么要设置cookie

if ($login_type == 'qq') {

$cookie_data = [

'session_id' => 'openid',

'session_type' => 'kp_actoken',

'org_loc' => rawurlencode('/v3/r/mpay/buy_goods_m'),

];

} elseif ($login_type == 'wx') {

$cookie_data = [

'session_id' => 'hy_gameid',

'session_type' => 'wc_actoken',

'org_loc' => rawurlencode('/v3/r/mpay/buy_goods_m'),

];

}

//下单

$result = SnsNetwork::makeRequest('https://ysdktest.qq.com/mpay/buy_goods_m', $data, $cookie_data, 'get');

$result 格式为(我转成了JSON,原本是数组)

{

"result": true,

"msg": "{\"ret\":0,\"token\":\"842C2C19D11B7780D0E9B4D8E73ED80531721\",\"url_params\":\"\/v1\/sx8\/1106694898\/mobile_goods_info?token_id=842C2C19D11B7780D0E9B4D8E73ED80531721\",\"attach\":\"\"}"

}

返回参数说明

ret

返回码 0 :成功,

>=1000:失败

msg ret不为 0 的时候,错误信息(utf-8编码)

token ret为0的时候,开发者需要保留。后续扣费成功后调用第三方发货时,会再传给开发者,作为本次交易的标识,有效期5分钟

url_params

ret为0的时候,返回真正购买物品的url的参数,开发者需要把该参数

传给sdk跳转到相关页面使用户完成真正的购买动作。

将msg里面的url_params与token返回给APP即可调用支付

二、应用发货回调

1.首先去后台配置回调地址,我这里是https,默认是http,可以用ip,如果用域名的话需要用https,但是你填写的时候他只会提示你要切换https,但是又不告诉你在哪里切。问了客服才知道,要他们来切换。我也是醉了

2.配置好了之后下载证书

hosting应用on CVM(即应用部署在腾讯CVM服务器上):

-发货URL只需HTTP协议即可,不需要使用SSL安全协议。

-必须使用9001端口(内网端口,需开发者主动启用,用apache iis或nginx做一个web监听,端口改成9001)。

hosting应用on CEE_V2(即应用部署在腾讯CEE_V2服务器上):

-发货URL只需HTTP协议即可,不需要使用SSL安全协议。

-必须使用9001端口(内网端口,需开发者主动启用,用apache iis或nginx做一个web监听,端口改成9001)。

-路径必须以ceecloudpay开头,即支付相关代码必须都放到应用根目录下的“ceecloudpay”目录下。

-对于CEE其发货URL的IP只能填写为10.142.11.27或者10.142.52.17(详见:CEE_V2访问云支付)。

non-hosting应用(即应用部署在开发者自己的服务器上)

-发货URL必须使用HTTPS协议。

-必须使用443端口(外网端口)。

注:我用的不是腾讯的服务器所以证书采用的是non-hosting应用

linux服务器证书配置

将下载的证书里面的

ca.crt , xxxxxxxx.crt xxxxx.key 3个文件上传到linux服务器,一般放在项目的私有目录

nginx你项目的配置里面加上

server{

listen 443;

server_name 你的网站;

index index.php;

root 网站目录;

ssl on;

ssl_certificate 服务器存放的地址/xxxxxxxx.crt;

ssl_certificate_key 服务器存放的地址/xxxxxxxx.key;

ssl_verify_client off;

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers on;

ssl_client_certificate 服务器存放的地址/ca.crt;

ssl_verify_depth 1;

#其他配置

...

}

重启服务器

手动访问一下看下是否能够访问,能够访问则配置成功

3.回调逻辑,你用get提交的请求,腾讯也用的get回调

回调参数 json_encode($_GET):

{

"amt": "1",

"appid": "123456789",

"appmeta": "(参考上面下单)订单类型*订单编号*qqwallet*qq",

"billno": "流水号",

"cftid": "财付通订单号",

"channel_id": "00000000-android-00000000-869782022252681-ysdkwater-qq",

"clientver": "android",

"ebazinga": "1",

"openid": "123123123123123",

"payamt_coins": "0",

"paychannelsubid": "1",

"payitem": "3*0.1*1",

"providetype": "5",

"pubacct_payamt_coins": "",

"token": "123123123123123",

"ts": "1518081937",

"version": "v3",

"zoneid": "1",

"sig": "H0jsNEOnf1mKIXgZ4mM0pnuk7BQ="

}

这里说是要验证签名,但是我用他的SDK没有验证出来 就放弃了o(╥﹏╥)o

$checkSign = SnsSigCheck::verifySig('get','/v3/r/mpay/buy_goods_m',$_GET,'秘钥&',$_GET['sig']);

if($checkSign){

//订单处理逻辑

...

}

/*

ret: 返回码。

msg: 道具发放操作的结果,成功为“OK”,失败则表明错误原因(必须使用utf8编码)。 腾讯设置的调用开发者发货超时是2秒钟,请开发者注意超时时间设置不要超过2秒,

否则腾讯后台将返回“系统繁忙”的错误消息。

返回建议:

1.在发货接口中记录被调用的log,用于查看是否发货回调接口能够被腾讯支付服务器回调,发起一笔

支付请求,查看发货回调接口是否有被调用。

2.联调回调发货接口时先在接口上固定返回发货成功的标准json字符串{"ret":0,"msg":"OK"},测试一

次支付,查看支付服务器是否能正常接收到回调发货接口返回的标准json内容。

注意:返回的内容中不能有空格、tab等字符、不能有其它多余的内容。

3.以上两步都能顺利通过,说明回调接口能正常被支付服务器调用,然后再在回调接口中加入游戏发货

的业务逻辑。

4. 协议错误码

0: 成功

1: 系统繁忙

2: token已过期

3: token不存在

4: 请求参数错误:(这里填写错误的具体参数)

*/

echo json_encode([

'ret' => 0,

'msg' => 'ok',

]);

exit;

腾讯的文档太坑爹了

谷歌pay服务端文档_腾讯米大师支付服务器端接入流程相关推荐

  1. 谷歌pay服务端文档_米大师服务端说明

    1.后台接口说明 1.支付后台接口API 1.1 API 1.1.1 查询余额接口 (1)URL地址 [现网]https:// ysdk.qq.com/mpay/get_balance_m [沙箱]h ...

  2. 谷歌pay服务端文档_Google pay 服务器验证

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. 谷歌pay服务端文档_google支付后台验证操作流程

    整个开发背景是前端在调用完google play支付流程后,需要后台验证支付结果以及在自己的服务生成订单相关信息.由此着手对google后台验证的调研,首先官方流程: https://develope ...

  4. python自动填写腾讯文档_腾讯文档自动填充工具(工具),填写

    平台: chrome,QQ 说明: 班委会提供一个腾讯文档链接,把找到自己的部分,把今天的体温填写完成. 所用库: from selenium import webdriver from seleni ...

  5. java支付系统设计文档_中国邮政储蓄银行网上支付平台商户开发指南Java版V2.1

    网上支付平台商户开发指南 第12页,共76页 上图中一共有6个条目,包括生产用的网关证书(paygate_cert )和生产证书链(operation_ca, operation_ca2, polic ...

  6. Axure电影购票服务产品需求文档+Axure体育球赛购票服务产品需求文档+Axure演唱会购票服务原型+在线购票系统+在线买票+在线选座+移动端票务系统+Axure电影购票服务prd文档

    Axure原型作品介绍:Axure电影购票服务产品需求文档+Axure体育球赛购票服务产品需求文档+Axure演唱会购票服务原型+在线购票系统+在线买票+在线选座+移动端票务系统+Axure电影购票服 ...

  7. 十三种技术文档模板_竞品分析|关于产品规划的思考:石墨文档 VS 腾讯文档 VS金山文档...

    作者以在线协作文档行业领先的石墨文档.腾讯文档和金山文档为例进行了了竞品分析,通过对几款产品全方位的分析,总结了自己关于石墨文档产品规划的思考. 一.竞品概述 1. 竞品目的 2. 竞品目的 通过对石 ...

  8. activiti 文档_那些可多人协作编辑的在线文档工具

    最近使用了下石墨文档,简直就是在线版的Word,Excel,PPT,而且可以多人实时编辑预览,真的太好用了,搜索了下发现这种在线文档工具还挺多的,这里做个整理推荐. 石墨文档 这个很多人应该都用过,石 ...

  9. Knife4j 2.0.8发布,史诗级微服务聚合文档中间件诞生

    Knife4j前身是swagger-bootstrap-ui,是一个为Swagger接口文档赋能的工具 文档:https://xiaoym.gitee.io/knife4j/(opens new wi ...

最新文章

  1. Android studio无法连接识别检测各种模拟器和手机的问题 (万能方案)。
  2. 一个颜值低但脾气超好的自动化运维实战入门教程
  3. Debian 9.6.0 + OpenMediaVault 4.x : U盘作系统盘时遇到的问题
  4. centos下离线安装mysql
  5. 怎么用计算机连接电视,电视当电脑显示器怎么连接
  6. cholesky分解_Time Series Analysis-1.2 LDL分解
  7. 用Markdown格式写一份前端简历
  8. 彻底拿下QSPI双闪存W25Q256| STM32H750| QSPI 双FLASH |cubeIDE |下载算法(一)
  9. linux: dirent.h 使用
  10. Git拉取远程最新代码,并与当前分支合并
  11. katacontainers网络文件系统分析
  12. Spring Boot当中获取request的三种方式
  13. 基于C#实现的《勇士返乡》游戏设计
  14. 管理 Office com 加载项
  15. 基于机器学习的天气数据分析与预测系统
  16. 如何调整照片大小kb?将照片缩小到指定的kb方法?
  17. WGS84坐标系转为西安80坐标系的解决方式
  18. 干货 || 如何在考博英语中拿高分
  19. 《怪诞行为学--丹.艾瑞里》知识点总结
  20. 存储技术与智能存储组件

热门文章

  1. 违禁词检索chrom扩展插件
  2. 查询 (Tcode)跳转ID方法:(SET PARAMETER ID)
  3. Linux查看系统状态-ZZT
  4. CCleaner 4.07中文版下载 绿色精简
  5. 数的变幻(魔术师的猜牌术(2))
  6. 183亿超募,超千亿估值,埃安为什么引发全行业抢投
  7. ckeditor KindEditor eWebEditor WQeditor FreeTextbox Tinymce 几款在线编辑器的比较(附各版本demo下载地址)
  8. Shell基础(四):字符串截取及切割、字符串初值的处理、基使用Shell数组、expect预期交互、使用正则表达式...
  9. 《你好,放大器》----学习记录(六)
  10. mq查看队列管理器信息linux,IBM WebSphere MQ for linux 安装详解 | MUCHINFO