+ 收藏我们

网站模板

网站模板搜索
404模板 营销型模板 外贸网站模板 单页模板 双语模板 标签大全
电话:18630701785
首页 > 站长学院 > 在 WordPress 中使用 Omnipay-Alipay 实现支付宝支付 >

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

时间:2024-08-01 09:29:57

支付宝屎一般的支付 API 相信让大家受了不少折磨,在 WordPress 中使用支付宝接口实现支付宝支付更是麻烦,具体怎么难用就不多说了,使用过的朋友自然深有体会。在 PHP 世界里,有一个叫 Omnipay 的支付处理库,该库做了一件好事,就是把各种支付平台乱七八糟的支付网关给统一化了,这样一来,我们只需要学习一种支付接口,就可以在 WordPress 中实现各种支付网关的接入,前提是 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(微信支付)这两个国内的常见支付平台处理库。

有问题可以加入网站技术QQ群一起交流学习

本站会员学习、解决问题QQ群(691961965)

客服微信号:lpf010888

pbootcms教程

织梦教程

站长学院

SEO

wordpress

竞价教程

信息流

Title