APP 支付宝支付,服务端处理

#支付宝支付 
#例:
#   [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("跳到主页")
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值