参考网址:https://blog.csdn.net/que_csdn/article/details/80861408 http://www.php.cn/php-weizijiaocheng-394625.html
上面的地址写的都不错的 可以参考改改代码 即OK!!!!
一、苹果APP支付到服务端验证流程
1. 用户在app中点击购买;
2. app调用服务端接口生成订单;
3. app获取到服务端订单生成成功后弹出支付窗口;
4. 用户输入密码支付;
5. app接收支付后apple应用商店返回的支付凭证;
6. app将支付凭证传回服务器,调用服务器接口验证凭证是否有效;
7. app获取服务器端的验证结果,反馈用户支付结果状态。
说明:苹果支付的商品,需要先在 itunes Connect 中配置APP内购项目,配置后对应会生成一个商品ID,在苹果APP端调用苹果支付时,就需要给苹果商店传送这个商品ID(product_id)参数。然后支付过程是在苹果商店中进行,支付完成后,返回一个支付凭证给APP,表示支付完成,但一般会再次调用自己的服务器(商家服务器)端进行支付验证,这时候在服务器写个验证接口,判断凭证是否有效,如果有效,对应修改订单状态和购买的商品状态等等。
二、凭证验证函数
|
注意:验证函数中有一个密钥需要在 itunes 中获取。
三、应用示范(ThinkPHP3.2控制器)
public
function
verify()
{
// 获取订单号
$order_no
= I(
'post.order_no'
);
// 获取用户id
$user_id
= I(
'post.uid'
);
//苹果内购的验证收据
$apple_receipt
= I(
'post.apple_receipt'
);
// 判断是否缺少参数
if
(
empty
(
$order_no
) ||
empty
(
$user_id
) ||
empty
(
$apple_receipt
) ) {
$message
=
"缺少请求参数"
;
$status
=
"400"
;
}
else
{
// 代码思路
// 1. 判断订单是否存在并且有效
// 2. 判断用户是否存在
// 3. 调用苹果支付凭证验证函数
$verify_result
= validate_apple_pay(
$apple_receipt
);
// 4.判断验证结果
if
(
$apple_result
[
'status'
] ) {
// 凭证验证成功
// 其他code,修改订单状态、购买商品状态……
$message
=
"ok"
;
$status
=
"200"
;
}
else
{
// 凭证验证失败
$status
=
"401"
;
$message
=
"验证失败"
;
}
}
// 返回接口数据
$result
=
array
();
if
( !
empty
(
$apple_receipt
) ) {
$result
[
'verify_result'
] =
$verify_result
[
'message'
];
$result
[
'apple_receipt'
] =
$apple_receipt
;
}
$result
[
'status'
] =
$status
;
$result
[
'message'
] =
$message
;
$this
->response(
$result
,
'json'
);
//以json方式返回数据
}
四、参考文档
1. HTTP标准状态码;
2. 苹果内购买项目配置流程;
3. iOS应用内支付(IAP)详解
转自:http://www.php.cn/php-weizijiaocheng-394625.html