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

准备工作

一、创建应用

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

支付宝支付-服务端php对接移动端应用app_第1张图片

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

支付宝支付-服务端php对接移动端应用app_第2张图片

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

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

支付宝支付-服务端php对接移动端应用app_第3张图片

4、下载支付宝秘钥工具

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

支付宝支付-服务端php对接移动端应用app_第4张图片

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生成的加签后的数据

支付宝支付-服务端php对接移动端应用app_第5张图片

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数据提交过了给你

支付宝支付-服务端php对接移动端应用app_第6张图片

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

支付宝支付-服务端php对接移动端应用app_第7张图片

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

支付宝支付-服务端php对接移动端应用app_第8张图片

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

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

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

你可能感兴趣的:(支付)