实现APP支付QQ,微信,支付宝三方的后端服务------php实现支付宝APP支付

前言:支付功能,可能目前大部分产品的设备都开始慢慢设计到,这里说到的支付有支付宝,微信,QQ等第三方支付

下面简单介绍下支付宝App支付后端的实现(这边是用php实现的):
一、 一些琐碎的申请和设置的方式就不说明了,支付宝开发者上有php服务端的Sdk,所以直接把SDK下载下来:

image
下载地址如下下载

二、 我这边用因为公司用的框架是tp3.2所以我把代码下载下来就放在vendor中
三、接下来就附上我的支付宝的支付工具类:
<?php

/**
 * @encoding UTF-8
 * @author wyb
 * @datetime 2017/3/29
 * @Description 支付宝支付控制器
 */

namespace Pay\Controller;

use Think\Controller;

/**
 * @name 
 * Class AlipayAppPayController
 */
class AlipayAppPayController extends Controller {
//因为我们公司有多个产品设备所以这边根据所传的来源设备赋予设备ID
    private $appidByTarget = [
        'xxxx' => '201702234205510228',
        'xxxx' => '201702234205510228',
        'xxxx' => '201702234205510228',
        'xxxx' => '201702234205510228',
        'xxxx' => '201702234205510228',
        'xxxx' => '201702234205510228',

    ];


    /**
     *这里需要说明下这里是我们产品所需要的部分逻辑,如果有需要也可学习使用
     *
     * 传入订单数据,进行整理、签名后,返回前端APP支付调起SDK信息
     * @param array $order 待支付的订单信息,数组中的必要信息如下:
     *  $order['id'] : 订单ID
     *  $order['price'] : 实付金额,单位:元
     *  $order['notifyUrl'] : 支付端异步通知地址,用于接受订单的支付结果
     *  $order['target'] : 支付请求的来源,根据不同的来源,需要使用不同的支付账号信息
     *  $order['title'] : 订单中文标题
     *  $order['description'] : 订单介绍
     */
    public function getCallSDKInfo($order){
        //做简单的参数检查
        if(!$order || !is_array($order) || !$order['id'] || !$order['price'] || !$order['notifyUrl'] || !$order['target']){
            return false;
        }
        //整理待签名数据
        $content = [
            'body' => $order['description'], //商品介绍
            'subject' => $order['title'], //标题
            'out_trade_no' => $order['id'], //商家订单ID
            'timeout_express' => '60m', //可支付有效时间,超过则无效,需要重新请求
            'total_amount' => $order['price'], //价格
            'seller_id' => '', //收款支付宝用户ID。 如果该值为空,则默认为商户签约账号对应的支付宝用户ID
            'product_code' => 'QUICK_MSECURITY_PAY',
            'goods_type' => '0' //商品类型
        ];
        Vendor('aop.request.AlipayTradeAppPayRequest');
        Vendor('aop.AopClient');
        $request = new \AlipayTradeAppPayRequest();
        $request->setBizContent(json_encode($content)); //请求对象,传入订单信息
        $request->setNotifyUrl($order['notifyUrl']); //支付异步通知地址
        $client = new \AopClient(); //实例化工具类
        $client->appId = $this->appidByTarget[$order['target']];

        return $client->sdkExecute($request);
    }

    /**
     * 查询交易订单信息
     * @return array
     */
    public function enquiriesOrderInfo($data)
    {
        Vendor('aop.request.AlipayTradeQueryRequest');
        Vendor('aop.AopClient');
        $client = new \AopClient(); //实例化工具类
        $client->appId = $this->appidByTarget[$data['target']];
        $request = new \AlipayTradeQueryRequest ();
        $content['out_trade_no'] =$data['out_trade_no'];
        $request->setBizContent(json_encode($content));

        $result = $client->execute($request);
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = $result->$responseNode->code;
        if(!empty($resultCode)&&$resultCode == 10000){
           return true;
        } else {
            return false;
        }
    }


    /**
     * 对异步通知的数据进行验签
     * @param array $post 接收到的数据
     */
    public function signCheck($post){
        //进行验签
        Vendor('aop.AopClient');
        $client = new \AopClient();
        return $client->rsaCheckV1($post, null, $post['sign_type']);
    }
}

下面是实现调用这工具类的方式,根据你使用的场景,下面我写的是tp的控制器,如果你是自己的框架或者是laravel,yii,yaf,就按照你们定义的写

<?php
/**
 *  简单的支付类
 * @encoding UTF-8
 * @author wyb
 * @datetime 2017/3/29
 * @Description 支付宝支付控制器
 */
 class payController extents Controller
 {
    public function pay()
    {
      $order =[]//订单数据,这个校验我这边就不做处理了,若需对数据更严谨可以使用加签检验,或者带上token的提高安全性能

      $alipay = new \Pay\Controller\AlipayAppPayController();
      $order['notifyUrl'] = 'htt://xxxxx'; //这个是给支付宝回调的接口
      $data = $alipay->getCallSDKInfo($order);//调用这个方法实现预订单

      return $data;//并将支付宝返回的数据发送给前端,若正确前端就能调起支付宝app实现支付。若前端报错,根据前端的错误信息来解决
    }

 }
php后端实现微信宝APP支付,请点击这里:GO
php后端实现QQAPP支付,请点击这里:GO
注:这个就是我php后端实现支付的业务的相关代码,若有什么问题反馈请指出,谢谢,(这里并附上我自己的博客地址:blog.taobaoroom.cn,若有什么问题可根据博客上赋有的QQ群地址联系我哦!!)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值