【无标题】

IOS内购认证踩坑

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

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

问题描述

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

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

问题根源

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

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

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

相关推荐
酷酷的身影5 小时前
Drivers/LedManager.cs
开发语言·php
可靠的仙人掌6 小时前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php
qq_422152578 小时前
PDF内容复用的几种实用方法:转PPT、转图片、转长图
pdf·php·powerpoint
weixin_BYSJ19871 天前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
用户3074596982071 天前
GatewayWorker 从零到一完整指南
javascript·php
XR1234567881 天前
食品饮料与制药行业GMP合规网络建设:无尘车间的网络不能成为污染源
开发语言·网络·php
AC赳赳老秦1 天前
传感器数据自动汇总:OpenClaw 采集多类传感器数据、清洗入库、生成趋势分析
java·人工智能·python·自动化·github·php·openclaw
Dynadot_tech1 天前
如何拍卖域名
开发语言·php
发光小北1 天前
Bronze100系列plc Modbus及自由口通信案例
开发语言·php
脏脏a2 天前
飞牛NAS部署EasyNVR实操:摄像头RTSP接入、本地录像与公网回看
开发语言·php