背景描述

项目对接华为HMS SDK的应用内支付IAP SDK3.x以后,支付成功后,可从PurchaseResultInfo对象中获取到购买数据InAppPurchaseData及其签名数据,需要使用在华为AppGallery Connect分配的公钥进行签名验证。

具体参考文档如下描述:

代码开发

这里随手用PHP写了一个小demo,验证拿到的购买数据、签名数据和公钥能否正常验签成功。同时也分享给大家,方便大家快速定位问题,比如公钥错误等问题。

代码

//收到的实际支付回调,不要做任何处理,请复制原始数据。

//这里xxxx等信息都是我屏蔽了一些个人数据,实际大家复制自己的回调数据就好

$content = '{"autoRenewing":false,"orderId":"201912250949586652ebf220c1.10xxxx75","packageName":"com.example.xxxxxxexample_netease.huawei","applicationId":10xxxx75,"kind":0,"productId":"3","productName":"test33333","purchaseTime":1577238608000,"purchaseTimeMillis":1577238608000,"purchaseState":0,"developerPayload":"09815772385983110000000191996123","purchaseToken":"0000016f3abf3a78a4ef7b217523ea5a346825ab632c152b864c2e5251433c9d599c5986ab8c89b1.1.10xxxx75","consumptionState":0,"acknowledged":0,"currency":"CNY","price":100,"country":"CN","payOrderId":"Aed0f1fbd9929f803d9d23b523b14575","payType":"4"}';

//sign值需要使用回调中的原始值,不要做urlencode或urldecode处理。

$sign = 'IuCnJI3bCDr92uomUbxamp6VeC8vN+o3GTtB7aVwTGpkk9QgeR9KdUjDya1tJXKX8HZgTTLpj7v4A1lP8xrOq3+knykn32Tup6STnn4qpee8J3sS9kjpIHmhIbh3QfnsHksCaT4ib9BurIWnH7yEtNlwqmOOibJw8FgFXofrfPsDwjuCy4/X9rlbimjmyAiFZLXCTNQoGollqUVEjqabhjh/a+VY89A6Z02F2bJkes39a7lQMer42egha86w65L3UYYSLOyxQPIfIZ1BG5yirZN4JgcD17CMk+vQvtVDXhC+e4xN//txWlG/qIgviZbmhLFGjA/gfP0o8LpY7booiA==';

//支付公钥需要处理成以下RSA格式,中间内容为公钥64位换行

$pubKey = '-----BEGIN PUBLIC KEY-----

MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq7iOD9qLMxMCEsY+l+IE

6kdI9HKHQoDG29ebPZFD+U1pdDewmkEcQzv/k0NmE9oeNIcxUqhg7ZwRrQ0g9xje

BCkiLTg4DOygOPOcZykuKZXDv/9aFn6FR5BVCrrOzmeR+/aEYcZZp86iWX+W4BdJ

L41i8qYonVRD6sDNuidAdg0UkNMPVRiHd5EYBgRHpPma7oeRVqfX4Iq/rL4DFOpu

uLiaLKmWSMOCLnIH+EXjjw3ttJOrB4Rq2fq6KrORgc8JMq2TPf/kK6r8NW9eWRWa

zmFvAZ8bUA7Idu4W8Z4SENwEO+ZeyWQx5I/piYEmBvmn3dy2l2bP3cZMUBVACkAE

jwIDAQAB

-----END PUBLIC KEY-----';

$openssl_public_key = @openssl_get_publickey($pubKey);

// SHA256 要根据实际回调中signType字段的取值确定,signType=RSA256时 使用以下字段值,其他任何情况都是用SHA1

$ok = @openssl_verify($content, base64_decode($sign), $openssl_public_key,'SHA256');

@openssl_free_key($openssl_public_key);

$result = "";

if($ok)

{

$result = "0";// success

}

else

{

$result = "1";// failure

}

$res = "{ \"result\": $result} ";

echo $res;

?>

运行

直接百度搜索个PHP在线运行工具,比如我这里随时用的:

复制代码进去后,运行返回0表示数据均正常。

原作者:Mayism

iap php,PHP语言之华为应用内支付IAP验签相关推荐

  1. PHP语言之华为应用内支付IAP验签

    背景描述 项目对接华为HMS SDK的应用内支付IAP SDK3.x以后,支付成功后,可从PurchaseResultInfo对象中获取到购买数据InAppPurchaseData及其签名数据,需要使 ...

  2. 接入华为应用内支付,验证购买Token接口,返回“rights invalid”

    有海外开发者向我们提问:我在应用中集成了华为应用内支付SDK(测试购买订阅型商品),按照文档说明,在服务器去请求验证购买Token接口的时候返回了{"responseCode":& ...

  3. Cocos2dx使用ios内支付IAP详细流程-白白

    今天总结了一下cocos2d-x使用ios内支付iap的详细流程,封装好了调用接口,代码与详细说明在此 http://download.csdn.net/detail/u010229677/81566 ...

  4. Cocos2dx使用ios内支付IAP具体流程-白白

    今天总结了一下cocos2d-x使用ios内支付iap的具体流程,封装好了调用接口,代码与具体说明在此 http://download.csdn.net/detail/u010229677/81566 ...

  5. 华为应用内支付报错60002:iap not activated,无法支付,拉不起支付界面

    问题描述: 测试应用内支付,无法拉起支付界面,看日志报错如下: 我们在文档错误码中查到该错表示支付服务开关没有打开,检查后还是不能支付. 问题分析: 1.  确认应用的支付服务开关是否已经打开,支付服 ...

  6. 华为应用内支付无法拉起

    对接华为HMS Core SDK 应用内支付(In-App Purchases,IAP)(4.0.4.300及更高版本)后,有时候会遇到华为IAP支付无法拉起的情况. 问题现象 发起支付后界面一闪而过 ...

  7. 【FAQ】接入华为应用内支付服务常见问题解答

    HMS Core应用内支付服务(In-App Purchases,IAP)为应用提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即 ...

  8. 华为应用内支付验签失败,报错Signature length not correct

    问题背景: 支付验签失败,具体报错如下: 问题分析: 支付公钥使用错误. 问题总结: 华为从IAP sdk3.x版本开始,支付公钥要参考如下章节获取,详细请参考文档: 原文链接:https://dev ...

  9. 使用iOS内支付IAP详细流程

    1.appstore信息完善 首先肯定有一个可以发布产品的开发者账号,有一个可以运行应用的开发环境,IAP只能真机测试,我们必须有一台IOS设备. 我们进行的所有操作都是在mac上面进行的,测试都是真 ...

最新文章

  1. win10安装emacs+spacemacs,建议用官方安装方式
  2. easy ui datagrid 中getSelections方法只能获取一行数据
  3. 虹软sdk 服务器运行 错误码94212 解决方案
  4. arch linux 树莓派,树莓派上安装配置Archlinux
  5. mz04那智不二越机器人编程_买买买!这些炫酷的机器人已加入进博会“购物车”!...
  6. 负值之美:负margin在页面布局中的应用
  7. lvs负载均衡的调度算法和工作模式
  8. npm -save 和-save-dev秒懂
  9. 1125 Chain the Ropes
  10. c# 软件单元测试,单元测试(C#版)
  11. Golang——time.Ticker定时器
  12. 一个完整的springboot项目所需要导入的依赖合集(方便查找)
  13. matlab中啥叫字符串,在matlab中( )用于括住字符串.
  14. C++四种cast的详细介绍
  15. 【Redis】Redis数据结构与对象(一)简单动态字符串(SDS)
  16. 全球疫情来袭,瑞士科学家在实验室重造冠状病毒?
  17. 【毕业设计】大数据疫情可视化分析系统 - python
  18. 苏州企业认定为高新技术企业后就可以享受所得税优惠吗
  19. 【离散数学】一阶逻辑等值演算与推理
  20. 国庆期间试用CodeGear C++ Builder 2007的感受

热门文章

  1. 这个80后靠王者荣耀赚到93亿身家
  2. 联想拯救者Y90关键参数曝光:22GB运存+640GB超大存储
  3. 马斯克回怼世粮署:能公开60亿美元花在哪 就立即卖股票捐款
  4. 智能续航兼得的“超能代表”OPPO Watch 2系列正式发布
  5. 乐刻发布新品牌LITTA 目前已拥有25万+线上付费用户
  6. iPhone 13高端版所需120Hz刷新率屏幕或将由三星独家供应
  7. 苹果iPhone 12系列智能手机支持北斗卫星导航定位
  8. 王思聪被限制高消费后,官方终于回应:已有解决方案
  9. 1999元的AirPods Pro无线耳机突然发布,史上最大升级,买不买?
  10. 会玩!今年天猫双11可以买房了 还是特价 网友:满300减40吗?