在 WordPress 中使用 Omnipay-Alipay 实现支付宝支付

文 / @WordPress主题

你好,我是小本本,今天要为大家介绍一款好用的支付处理库——Omnipay-Alipay。大家都知道,支付宝的支付API实在是让人头疼,特别是在WordPress中实现支付宝支付更是困难重重。但Omnipay库的出现,解决了这个问题,统一化了各个支付平台的支付网关,只需要学习一种支付接口,就可以在WordPress中实现各种支付网关的接入,非常方便实用。

第一步:安装配置Omnipay-Alipay

首先,在命令行中使用Composer安装:

composer require omnipay-alipay

然后,在代码中,加载autoload.php,并配置支付宝帐号。

//加载composer安装的库
require_once(dirname(__FILE__).'/../vendor/autoload.php');

use Omnipay\Omnipay;

//创建调用支付宝支付网关的函数,以便在其他文件中调用
function get_gate_way(){
    $gateway = Omnipay::create('Alipay_Express');
    $gateway->setPartner('*******');//支付宝PID
    $gateway->setKey('*****************');//支付宝Key
    $gateway->setSellerEmail('admin@example.com');//收款账户email

    $gateway->setReturnUrl('https://www.wpzhiku.com/order_return');
    $gateway->setNotifyUrl('https://www.wpzhiku.com/order_return');
    return $gateway;
}

第二步:调用接口,跳转到支付宝支付

提供生成订单必需的数据,例如订单号、订单金额、订单标题等,创建订单,并跳转到支付宝支付页面。

//在线充值
newDispatch([
    'online_charge' => function($request){
        $mount = trim($_POST['mount']);
        $tn = "p4".order_no();

        //计算总金额
        $total_fee = array_sum($mount);

        //创建订单数据,可以是前台提交,也可以是自动生成
        $options=[
            'out_trade_no' => $tn,//生成唯一订单号
            'subject' => '在线充值',//订单标题
            'total_fee' => $total_fee,//订单总金额
        ];

        //获取支付网关
        $gateway = get_gate_way();

        $response = $gateway->purchase($options)->send();

        //直接跳转到支付宝支付页面
        $response->redirect();
    },
]);

第三步:处理返回数据,根据返回数据处理订单

这里是return_url的内容,跟据接受到的参数,联系支付宝验证订单支付状态,根据验证状态确定支付成功,如果支付成功,处理订单(这里是直接显示一个支付成功的字符串),如果支付失败,返回支付失败信息。

//处理支付宝返回信息
newDispatch([
    'order_return' => function($request){
        $options=[
            'request_params' => $_REQUEST,
        ];

        $gateway = get_gate_way();
        $response = $gateway->completePurchase($options)->send();

        if($response->isSuccessful() && $response->isTradeStatusOk()){
            $total_fee = $_GET['total_fee'];
            $trade_no = $_GET['trade_no'];
            $out_trade_no = $_GET['out_trade_no'];
            $subject = $_GET['subject'];
            $body = $_GET['body'];

            echo "支付成功";
        }else{
            echo "支付失败";
        }
    }
)]

上面的示例代码中,简单介绍了Omnipay-Alipay的使用方法和流程。在具体的项目中,我们还是要根据需要,实现具体的业务逻辑。除此之外,还有Omnipay-UnionPay(银联支付)和Omnipay-WeChat(微信支付)这两个国内常见的支付平台处理库。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。