php对接支付宝Web支付-tp5.1框架

2 篇文章 0 订阅
1 篇文章 0 订阅

具体流程 

    1.获取支付宝相关配置

    2.传相关参数请求支付宝网关(订单金额 订单号等)

    3.支付宝请求回调地址

    4.回调地址做相关业务处理(数据库增删改查之类)

    5.处理完成以后返回success给支付宝服务器

1.首先获取应用id和商户私钥以及支付宝公钥等,具体如下

//支付宝支付参数
function pay_config()
{
    //应用id
    $config['app_id'] = '应用id';
    //商户私钥
    $config['merchant_private_key'] = '商户私钥';
    //异步通知地址
    $config['notify_url'] = '异步回调地址';//post请求方式
    //同步通知地址
    $config['return_url'] = '';//get请求方式
    //编码格式
    $config['charset'] = 'UTF-8';
    //签名方式
    $config['sign_type'] = 'RSA2';
    //支付宝网关
    $config['gatewayUrl'] = 'https://openapi.alipay.com/gateway.do';
    //支付宝公钥
    $config['alipay_public_key'] = '支付宝公钥';

    return $config;
}

2.编写支付宝支付的公共调用方法

/**
 * web支付
 * @param $orderId 订单号
 * @param $amount 订单金额
 * @param string $orderName  订单名称
 * @param string $describe 订单描述
 * @throws Exception
 * created by ZLS at 2019/11/20 9:51
 */
function alipayWebPay($orderId, $amount, $orderName = '订单名称', $describe = '')
{
    header('Content-type: text/html; charset=utf-8');

    //引入支付宝类库
    require_once './webpay/pagepay/service/AlipayTradeService.php';
    require_once './webpay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';

    //获取支付配置
    $config = pay_config();

    //商户订单号,商户网站订单系统中唯一订单号,必填
    $out_trade_no = $orderId;

    //订单名称,必填
    $subject = $orderName;

    //付款金额,必填
    $total_amount = $amount;

    //商品描述,可空
    $body = $describe;

    //构造参数
    $payRequestBuilder = new AlipayTradePagePayContentBuilder();
    $payRequestBuilder->setBody($body);
    $payRequestBuilder->setSubject($subject);
    $payRequestBuilder->setTotalAmount($total_amount);
    $payRequestBuilder->setOutTradeNo($out_trade_no);

    $aop = new AlipayTradeService($config);

    /**
     * pagePay 电脑网站支付请求
     *
     * @param $builder 业务参数,使用buildmodel中的对象生成
     * @param $return_url 同步跳转地址,公网可以访问
     * @param $notify_url 异步通知地址,公网可以访问
     *
     * @return $response 支付宝返回的信息
     */
    $response = $aop->pagePay($payRequestBuilder, $config['return_url'], $config['notify_url']);

    //输出表单 由于我做的是扫码支付 这里就不需要输出表单 如果要跳到支付宝收银台 貌似是要输出表单(具体没试)
    var_dump($response);
}

3.生成唯一订单号

//生成唯一订单号
function build_order_no()
{
    return date('Ymd').substr(implode(null, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
}

4.OK~ 控制器直接调用支付方法即可

5.关于回调地址 一般情况都是用异步回调,但是一定要在业务处理完成以后 echo 'success'; 不然支付宝会重复通知异步回调地址。

6.接收支付宝返回参数的时候,要用$_POST的方式接收tp5.1使用$request接收不到返回参数

7.异步回调地址中要记得做签名校验

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值