支付宝支付-服务端php对接移动端应用app

准备工作

一、创建应用

1、要在支付宝开放平台那里创建自己的应用,创建这里我简单描述一下,更详细的还是官方文档!

这里写图片描述

2、把里面的信息填完,提交审核(审核时间大概一天)

这里写图片描述

3、审核完了,在应用那里拿到APPID,把AppId记下来,然后配置应用

更详细的配置可以参考点击这里:支付宝创建应用详细文档教程

这里写图片描述

4、下载支付宝秘钥工具

支付宝秘钥工具
更详细的,参考官方文档生成教程对应你设置的是RSA2试试RSA

这里写图片描述

5、下载php-SDK

下载php-sdk
也有更详细的demo也可以参考

二、开始搞了

1、支付订单信息示例
$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "app_id";
$aop->rsaPrivateKey = '请填写开发者私钥去头去尾去回车,一行字符串' ;
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';//对应填写
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数

//********注意*************************下面除了body描述不是必填,其他必须有,否则失败
$bizcontent = json_encode(array(
            'body'=>'我是测试数据',

            'subject' => 'App支付测试',//支付的标题,

            'out_trade_no' => '20170125test01',//支付宝订单号必须是唯一的,不能在支付宝再次使用,必须重新生成,哪怕是同一个订单,不能重复。否则二次支付时候会失败,订单号可以在自己订单那里保持一致,但支付宝那里必须要唯一,具体处理自己操作!

            'timeout_express' => '30m',//過期時間(分钟)

            'total_amount' => '0.01',//金額最好能要保留小数点后两位数

            'product_code' => 'QUICK_MSECURITY_PAY'
        ));


$request->setNotifyUrl("商户外网可以访问的异步地址");//你在应用那里设置的异步回调地址

$request->setBizContent($bizcontent);

//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);

//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。这里就是方便打印给你看,具体你直接可以在方法那里return出去,不用加htmlspecialchars,或者响应给app端让他拿着这串东西调起支付宝支付
2、这里是打印加签是数据

通过sdk生成的加签后的数据

这里写图片描述

3、异步处理
 public function notifyurl()
 {
        $aop = new \AopClient;
        $aop->alipayrsaPublicKey = '请填写支付宝公钥,一行字符串';
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
        if($flag){
            //验证成功
            //这里可以做一下你自己的订单逻辑处理

            echo 'success';//这个必须返回给支付宝,响应个支付宝,
        } else {
            //验证失败
            echo "fail";
        }
        //$flag返回是的布尔值,true或者false,可以根据这个判断是否支付成功
   }
4、支付宝异步带过来的数据

支付宝提交过来的POST原数据,json数据提交过了给你

这里写图片描述

这里我把他变成数组,方便浏览信息

这里写图片描述

5、结合App支付做一个同步通知处理

这里写图片描述

app请求支付宝支付宝返回数据文档

写个方法去处理同步的数据,让app把支付宝同步返回的数据提交给后台处理,以异步数据为主同步为辅这样处理验证。保证支付数据一致准确,建议做一下吧,因为我们搭建的服务器如果出现问题了,支付宝的异步数据收不到,但是app可以收到支付宝的同步数据,不过支付宝服务器会在24小时内每隔一段时间再请求我们的服务器的。为了保证不会出现这样的事情。保证用户体验度,建议做个同步和异步处理,异步为主,同步为辅!异步处理了逻辑改变订单状态,同步也可以去查询订单状态是否改变,如果没有改变就走同步的数据,在同步方法那里做修改订单状态的逻辑处理!

以上是我自己个人经验以及个人看方法,有什么不对的错误的请多多指教!有什么更好的也可以说出来!大家共同进步,共同学习!谢谢!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
要使用支付宝支付服务,您需要先注册支付宝开发者账号并创建应用。然后,您可以使用支付宝提供的开发工具包进行开发。以下是一个简单的 PHP 代码示例,可用于生成支付宝付款二维码: ```php <?php require_once("alipay-sdk-PHP-20180104100456/AopSdk.php"); //引入支付宝SDK $aop = new AopClient(); $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';//支付宝网关 $aop->appId = '您的应用ID';//您的应用ID $aop->rsaPrivateKey = '您的应用私钥';//您的应用私钥 $aop->alipayPublicKey = '支付宝公钥';//支付宝公钥 $aop->apiVersion = '1.0'; $aop->signType = 'RSA2';//签名算法 //构造参数 $request = new AlipayTradePrecreateRequest(); $request->setBizContent("{" . " \"out_trade_no\":\"20150320010101001\"," . " \"total_amount\":\"88.88\"," . " \"subject\":\"Iphone6 16G\"," . " \"store_id\":\"NJ_001\"," . " \"timeout_express\":\"90m\"" . " }"); //请求预授权码 $result = $aop->execute($request); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $qrCodeUrl = $result->$responseNode->qr_code; //生成二维码 echo '<img src="http://qr.liantu.com/api.php?text='.urlencode($qrCodeUrl).'">'; ?> ``` 在以上示例中,您需要将“您的应用ID”、“您的应用私钥”和“支付宝公钥”替换为您自己的信息。此外,您还需要将“out_trade_no”、“total_amount”和“subject”替换为您的商品信息。最后,使用$qrcodeUrl生成二维码即可。 当用户扫描二维码并完成付款后,支付宝将发送回调通知到您的服务器。您可以使用相应的 SDK 处理这些通知,以便更新您的系统并将订单标记为已付款。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值