#支付宝支付
#例:
# [APP支付的服务端处理 ]
# [使用框架thinkphp5]
# [client ios]
# SDK 下载及处理 https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.RK169y&treeId=54&articleId=106370&docType=1
#引入vendor 目录下的文件
public function _initialize()
{
vendor('new_alipay.AlipayTradeAppPayRequest');
vendor('new_alipay.AopClient');
}
#客户端点击支付 @获取签名串+同步回调地址
function queryAlipay()
{
#请求参数说明
#https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.3X7Lr0&treeId=193&articleId=105465&docType=1
$timeout_express ='5m' #设置超时时间
$seller_id = Config::get('new_alipay_config.seller_id');#商家id
$total_amount = '500.00';#订单总金额
$subject = 'xxx' #商品的标题
$out_trade_no = 'S20170620157534';#商户网站唯一订单号
$body = 'xxxxx';#对一笔交易的具体描述信息。
$aop = new \new_alipay\app\AopClient;
$aop->gatewayUrl = Config::get('new_alipay_config.gatewayUrl');#支付宝网关
$aop->appId = Config::get('new_alipay_config.app_id');#支付宝分配给开发者的应用Id
$aop->alipayrsaPublicKey = Config::get('new_alipay_config.alipay_public_key');#请填支付宝公钥,一行字符串
$aop->rsaPrivateKey = Config::get('new_alipay_config.rsaPrivateKey');#请填写开发者私钥去头去尾去回车,一行字符串//例图↓
$aop->charset = Config::get('new_alipay_config.charset');
$aop->signType = Config::get('new_alipay_config.sign_type');#签名类型
$request = new \new_alipay\app\AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$seller_id = Config::get('new_alipay_config.seller_id');
$bizcontent = "{\"timeout_express\":\"$timeout_express\","
. "\"seller_id\": \"$seller_id\","
. "\"product_code\": \"QUICK_MSECURITY_PAY\","
. "\"total_amount\": \"$total_amount\","
. "\"subject\": \"$subject\","
. "\"out_trade_no\":\"$out_trade_no\","
. "\"body\":\"$body\""
. "}";
$request->setNotifyUrl(Config::get('new_alipay_config.notify_url'));
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
$return_url = Config::get('new_alipay_config.return_url');
$return = [
'error' => '0',
'result'=> [
'orderString'=>$response,
'callback'=>$return_url
]
];
exit(json_encode( $return) );
}
#https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.IfhAgc&treeId=54&articleId=106370&docType=1
# 接口异步处理 如果用户支付期间出现异常情况,支付宝服务器会不断重发通知,直到超过24小时22分钟
$aop = new AopClient;
$aop->alipayrsaPublicKey = $alipay_config['alipayrsaPublicKey'];#请填写支付宝公钥,一行字符串
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA");
if ($flag) {
#支付状态已更新
if ($pay_status==0) {
#更新订单支付状态
#https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CY7sPZ&treeId=193&articleId=105301&docType=1
echo 'success';
}else{
echo 'success';
}
}else{
echo 'fail';
}
# 接口同步处理
# @@注意@@@
# 这里验证签名的时候和异步验证有区别
#https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.Qpcpiu&treeId=193&articleId=105302&docType=1
$aop = new AopClient;
$aop->alipayrsaPublicKey = $alipay_config['alipayrsaPublicKey'];#请填写支付宝公钥,一行字符串
$data = $_GET['alipay_trade_app_pay_response'];#代表签名原始字符串
$sign = $_GET['sign']
$flag = $aop->verify($data, $sign, NULL, $signType = 'RSA');
if ($flag) {
#支付状态已更新
if ($pay_status==0) {
#更新订单支付状态
#https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CY7sPZ&treeId=193&articleId=105301&docType=1
header("跳到订单详情")
}else{
header("跳到订单详情")
}
}else{
header("跳到主页")
}
APP 支付宝支付,服务端处理
最新推荐文章于 2021-01-14 11:16:00 发布