支付宝支付(yii应用)

支付宝APP支付申请配置过程详解:https://blog.csdn.net/Zhihua_W/article/details/80029494

关闭框架的csrf防护!!!!!

1、将demo放到extensions目录下;

2、在extensions下创建alipay.php 文件内容如下:

 

<?php
/**
 * Created by PhpStorm.
 * User: tanjianwei
 * Date: 18/3/27
 * Time: 下午3:07
 * 支付宝即时到账
 */
namespace app\extensions;

/**
 * 引用支付宝核心类
*/
require_once dirname(__dir__) . DIRECTORY_SEPARATOR.'extensions/alipay.trade.page.pay-PHP-UTF-8/pagepay/service/AlipayTradeService.php';
require_once dirname(__dir__) . DIRECTORY_SEPARATOR.'extensions/alipay.trade.page.pay-PHP-UTF-8/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';
// 退款类
require_once dirname(__dir__) . DIRECTORY_SEPARATOR.'extensions/alipay.trade.page.pay-PHP-UTF-8/pagepay/buildermodel/AlipayTradeRefundContentBuilder.php';

class Alipay {

    private $app_id;
    private $merchant_private_key;
    private $notify_url;
    private $return_url;
    private $charset;
    private $sign_type;
    private $gatewayUrl;
    private $alipay_public_key;

    function __construct()
    {

        //应用ID,您的APPID。
        $this->app_id = "",

        //商户私钥
        $this->merchant_private_key = "",
        
        //异步通知地址
        $this->notify_url = "http://外网可访问网关地址/alipay.trade.page.pay-PHP-UTF-8/notify_url.php",
        
        //同步跳转
        $this->return_url = "http://外网可访问网关地址/alipay.trade.page.pay-PHP-UTF-8/return_url.php",

        //编码格式
        $this->charset = "UTF-8",

        //签名方式
        $this->sign_type = "RSA2",

        //支付宝网关
        $this->gatewayUrl = "https://openapi.alipay.com/gateway.do",

        //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
        $this->alipay_public_key = "",

    }

    function alipay_config()
    {
        $config = array (
            //应用ID,您的APPID。
            'app_id' => $this->app_id,

            //商户私钥
            'merchant_private_key' =>  $this->merchant_private_key,
            //异步通知地址
            'notify_url' => $this->notify_url,

            //同步跳转
            'return_url' => $this->return_url,

            //编码格式
            'charset' => $this->charset,

            //签名方式
            'sign_type'=>$this->sign_type,

            //支付宝网关
            'gatewayUrl' => $this->gatewayUrl,

            //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
            'alipay_public_key' => $this->alipay_public_key
        );
        return $config;
    }

    /*
     * 支付宝支付方法
     * @param $out_trade_no 网站订单号
     * @param $subjuect     订单名称
     * @param $total_amount 支付金额,
     * @param $body 商品描述
     *
     * @return 跳转到支付宝支付页面
     *
     */
    function trade($out_trade_no,$subjuect,$total_amount,$body='')
    {
        //商户订单号,商户网站订单系统中唯一订单号,必填
        $out_trade_no = trim($out_trade_no);

        //订单名称,必填
        $subject = trim($subjuect);

        //付款金额,必填
        $total_amount = trim($total_amount);
        // $total_amount = trim(0.01);

        //商品描述,可空
        $body = trim($body);

        $config = $this->alipay_config();

        //构造参数
        $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']);
    }


    /*
     * 支付宝退款方法
     * @param $trade_no      支付宝交易号
     * @param $refund_amount 需要退款的金额
     * @param $refund_reason 退款原因
     * @param $out_request_no 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
     * @return 跳转到支付宝支付页面
     *
     */
    function refund($trade_no,$refund_amount,$refund_reason='',$out_request_no)
    {

        //支付宝交易号
        $trade_no = trim($trade_no);

        //需要退款的金额,该金额不能大于订单金额,必填
        $refund_amount = trim($refund_amount);

        //退款的原因说明
        $refund_reason = trim($refund_reason);

        //标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传
        $out_request_no = trim($out_request_no);

        $config = $this->alipay_config();

        //构造参数
        $RequestBuilder = new \AlipayTradeRefundContentBuilder();
        // $RequestBuilder->setOutTradeNo($out_trade_no);
        $RequestBuilder->setTradeNo($trade_no);
        $RequestBuilder->setRefundAmount($refund_amount);
        $RequestBuilder->setOutRequestNo($out_request_no);
        $RequestBuilder->setRefundReason($refund_reason);

        $aop = new \AlipayTradeService($config);
        
        /**
         * alipay.trade.refund (统一收单交易退款接口)
         * @param $builder 业务参数,使用buildmodel中的对象生成。
         * @return $response 支付宝返回的信息
         */
        $response = $aop->Refund($RequestBuilder);

    }


}

在控制器调用附件中trade方法实现支付宝支付

支付宝异步处理:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值