【无标题】

IOS内购认证踩坑

苹果内购认证的逻辑很简单,支付成功后,由前端发送一个凭证给后端,后端拿着凭证请求苹果提供的认证地址,根据返回的status来判断凭证是否正确,正确的话根据前端一同传递过来的订单号,处理订单逻辑。

上述流程没什么难度,但没想到会在请求参数的问题上踩了坑,浪费了几个小时,无语至极。

问题描述

上述代码执行后,一直返回 { "status": 21002 },意思是receipt-data 格式无效(不是合法的 Base64 凭证)

一开始我以为是传递参数没有按json格式发送给接口,后面测试了其他的http组件和扩展,各种设置header的content-type,但是都没有用,依然报上面的错

问题根源

前端传递的receipt凭证是bse64字符串,本来不因该包含反斜杠的。当时前端处理时,可能对它做了json转换,这会把字符串中 / 前都追加了 反斜杠 \

而我在测试时,前端使用的是form-data方式传参,导致原样接收了被追加了很多反斜杠的错误凭证。

当前端使用json传递参数,会自动把反斜杠转义,receipt凭证就又恢复了正常,认证就通过了

相关推荐
众乐乐_20082 小时前
PHP 的进程 fork 机制
开发语言·php
专注VB编程开发20年4 小时前
专业分析python底层调用与按键精灵,ah3等的对比,hookdll,内存加载,调用.net dll
开发语言·javascript·python·microsoft·php·.net
DK1858383225215 小时前
知识付费会员小程序/付费圈子系统——课程兑换码+会员体系完整实战,开源运营级方案
小程序·uni-app·开源·php
江上清风山间明月17 小时前
Nginx基于域名区分的多网站部署
运维·nginx·部署·php·多个网站
工业甲酰苯胺19 小时前
Redis--集群搭建与主从复制原理
数据库·redis·php
JSON_L21 小时前
FastAdmin 短信插件开发完整教程
php·fastadmin
卡次卡次11 天前
14.2:详细补充:子进程会复制什么
前端·python·php
梦梦代码精1 天前
Likeshop一个开源商城到底有哪些功能模块?
java·低代码·开源·php
赏金术士1 天前
Kotlin 从入门到进阶 之协程 Flow 模块(九)
开发语言·kotlin·php