苹果支付 php,【苹果支付二】apple pay苹果支付以及自动续订订阅开发 - Laravel学习网...
一、APP端获取数据
1、订阅后APP端会获取到如下信息:
{
“payment”: {
“productid”: “1”,
“quantity”: “1”
},
“transactionDate”: “2020-07-04 10:06:42”,
“transactionIdentifier”: “100000…”,
“transactionReceipt”: “ewoJInNpZ25hdHVyZSIgPSA…”,
“transactionState”: “1”,
“errMsg”: “requestPayment:ok”
}
2、沙盒续期时间是缩短了的,并且会在5次续订(一共6条收据)后自动取消
二、验证收据(调用apple server的接口)
1.普通购买收据验证
验收接口如下:
沙盒:https://sandbox.itunes.apple.com/verifyReceipt
生产环境:https://buy.itunes.apple.com/verifyReceipt
参数如下,transactionReceipt为返回的凭证:
{
“receipt-data” : transactionReceipt
}
注意:这里是POST推送json参数,以Laravel使用guzzle 发送请求为例:
use GuzzleHttp\Client;
···
$client = new Client();
$transactionReceipt = “ewoJInNpZ25hd…”;
$response = $client->request(‘POST’, ‘https://sandbox.itunes.apple.com/verifyReceipt‘, [‘json’ => [“receipt-data”=>$transactionReceipt]]);
$body = json_decode($response->getBody());
dd($body);
2、自动续费收据验证
自动订阅的收据验证接口和其他IAP一样,只是需要加入password参数:
{
“receipt-data”: “(actual receipt bytes here)”,
“password”: “(shared secret bytes here)”
}
Laravel PHP调用如需啊
$client = new Client();
$transactionReceipt = “ewoJInNpZ25hd…”;
$response = $client->request(‘POST’, ‘https://sandbox.itunes.apple.com/verifyReceipt‘, [‘json’ => [“receipt-data”=>$transactionReceipt,,”password”=>”2d745…”]]);
$body = json_decode($response->getBody());
dd($body);
password是在App Store connect上创建的秘钥
三、返回数据说明
a、auto_renew_status: 订阅自动续订状态
1:-订阅将在当前订阅期结束时续订。
0:-客户已关闭其订阅的自动续订。
b、status: 状态码
一般票据会有3种情况:
0:刚付费,有效状态
21006:时间到了,没有续费
0:时间到了后,又续费了,返回的为0,即使是之前返回21006 的老凭据,只要续费后也返回0。
c、auto_renew_product_id: 在Apple App Store中标识产品的字符串。即产品ID
d、expires_date: 订阅的过期时间
e、original_transaction_id: 初次购买的交易标识。所有订阅的更新和恢复交易都共享这个标识。
f、original_purchase_date: 初次购买(订阅)的日期。
g、purchase_date: 交易的日期。对于更新订阅的交易来说,这个日期表示更新日期。如果从App Store解析的数据是最新的订阅收据,这个值表示最近更新订阅的日期。
h、latest_receipt:新的收据,即每次用户续订后返回新的latest_receipt凭证,
注意:必须使用新的凭证才能查询新的续约信息,如果无新的续费信息则latest_receipt值不会改变。可以对比latest_receipt值判断是否有新的续费信息。
i、receipt、latest_expired_receipt_info、latest_receipt_info:返回数据,三个返回的数据类型是一样的、优先使用receipt,使用老的收据返回latest_receipt_info,使用新的收据则返回latest_expired_receipt_info。
四、App Store状态回调
在APPStore输入用于接收App Store服务器通知的网址(URL)
配置此url后,apple会在以下状态时调用配置的接口。
CANCEL:取消了订阅
DID_CHANGE_RENEWAL_PREF:取消了订阅,在sandbox测试时,6次收据之后,就会变成这个状态
DID_CHANGE_RENEWAL_STATUS:是各种状态改变下都会调用,比如说首次购买会收到两次回调,一个是INITIAL_BUY一个是DID_CHANGE_RENEWAL_STATUS
DID_FAIL_TO_RENEW:由于结算问题,订阅无法续订
DID_RECOVER:App Store通过计费重试恢复了已过期的订阅
INITIAL_BUY:首次订阅成功
INTERACTIVE_RENEWAL:恢复了订阅,在sandbox测试时,6次收据之后,重新订阅,就会是这个状态
RENEWAL:恢复了订阅
REFUND:AppleCare成功退还了有关消耗性,非消耗性或非续订订阅的交易
【苹果支付二】apple pay苹果支付以及自动续订订阅开发 - Laravel学习网
原文出处: https://phpartisan.cn/news/139.html
问题交流群 :168117787
还没有评论,来说两句吧...