app开发调起支付宝支付

支付宝的一些配置信息,可以写在config,这边我为了方便就放在这里

	public $partner_public_key  = "";
    public $alipay_public_key   = "";
    public $serverUrl ='http://publicexprod.d5336aqcn.alipay.net/chat/multimedia.do';
    public $appid = "";
    public $partner_private_key = '';
    public $format = "json";
    public $charset = "GBK";
    
private function pay($order){
        //支付宝
        vendor('Alipay');
        vendor('Alipay.aop.AopClient');
        vendor('Alipay.aop.request.AlipayTradeAppPayRequest');
        $notify_url = $_SERVER['HTTP_HOST'].url("Alipay/notify_url");
        $config = array(
            'appid' =>$this->appid,//
            'rsaPrivateKey' =>$this->partner_private_key,//开发者私钥私钥
            'alipayrsaPublicKey'=>$this->alipay_public_key,//支付宝公钥
            'charset'=>strtolower('utf-8'),//编码
            'notify_url' =>$notify_url,//回调地址(支付宝支付成功后回调修改订单状态的地址)
            'payment_type' =>1,//(固定值)
            'seller_id' =>'xxxxxxxx@163.com',//收款商家账号
            'charset' => 'utf-8',//编码
            'sign_type' => 'RSA2',//签名方式
            'timestamp' =>date("Y-m-d H:i:s"),
            'version' =>"1.0",//固定值
            'url'  => 'https://openapi.alipay.com/gateway.do',//固定值
            'method' => 'alipay.trade.app.pay',//固定值
        );

        $aop = new \AopClient();
        $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
        $aop->appId = $config['appid'];
        $aop->rsaPrivateKey = $config['rsaPrivateKey'];
        $aop->format = "json";
        $aop->charset = "UTF-8";
        $aop->signType = "RSA2";
        $aop->alipayrsaPublicKey=$config['alipayrsaPublicKey'];
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        $request = new \AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数
        $total_price = sprintf("%.2f",$order['total_price']);
        $bizcontent = json_encode([
            'body'=>'商城购物',
            'subject'=>"商城购物",
            'out_trade_no'=> $order['order_sn'],//此订单号为商户唯一订单号
            'total_amount'=>$total_price,//保留两位小数
            'product_code'=>'QUICK_MSECURITY_PAY'
        ]);
        $request->setNotifyUrl($config['notify_url']);
        $request->setBizContent($bizcontent);
        //这里和普通的接口调用不同,使用的是sdkExecute
        $response = $aop->sdkExecute($request);
        $datas=$response;//就是orderString 可以直接给客户端请求,无需再做处理。
        return $datas;//把这些参数返回给前端
    }

接下来做一下回调处理

    public function notify_url() {
        vendor('Alipay');
        vendor('Alipay.aop.AopClient');
        $aop = new \AopClient();
        $config['alipayrsaPublicKey']=$this->alipay_public_key;//公钥
        $aop->alipayrsaPublicKey = $config['alipayrsaPublicKey'];
        //此处验签方式必须与下单时的签名方式一致
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
        //验签通过后再实现业务逻辑,比如修改订单表中的支付状态。
        /**
        ①验签通过后核实如下参数out_trade_no、total_amount、seller_id
        ②修改订单表
         **/
        $arr = input('post.');
//        Db::name('test')->insert(['test'=>json_encode(input('post.')),'addtime'=>time()]);
        if($flag && $arr['trade_status'] == 'TRADE_SUCCESS'){
            $trade_no = input('post.trade_no'); //支付宝交易号
            $out_trade_no = input('post.out_trade_no'); //商户订单号
            $order_info = Db::name("order")->where(['order_sn'=>$out_trade_no])->find();
            if ($order_info['status'] == 5) {
                echo "success";
            }else{
                 /*以下写业务逻辑*/
            }
            echo "success";
        }
    }

在这里插入图片描述
配合前端做App开发,亲测可用!不足之处,欢迎指点!转载请注明来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值