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

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

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

支付宝屎一般的支付 API 相信让大家受了不少折磨,在 WordPress 中使用支付宝接口实现支付宝支付更是麻烦,具体怎么难用就不多说了,使用过的朋友自然深有体会。在 PHP 世界里,有一个叫Omnipay的支付处理库,该库做了一件好事,就是把各种支付平台乱七八糟的支付网关给统一化了,这样一来,我们只需要学习一种支付接口,就可以实现各种支付网关的接入,前提是 Omnipay 得支持这种网关。感谢“Loki Else”大神为Omnipay添加了支付宝支持,这就是我们今天要介绍的Omnipay-Alipay。

第一步:安装配置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;
}

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

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

// 在线充值
new Dispatch( [

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

// 处理支付宝返回信息
new Dispatch( [

  '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(微信支付)这两个国内的常见支付平台处理库。

本站提供 WordPress 主题定制开发服务

本站长期承接WordPress主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有7年 WordPress 开发经验, 如果你想用 WordPress 开发网站, 请联系 QQ: 470266798 或邮箱: 4626395@gmail.com 咨询。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*