承接 qianlizeguo/yii2-alipay 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

qianlizeguo/yii2-alipay

Composer 安装命令:

composer require qianlizeguo/yii2-alipay

包简介

alipay for Yii2

README 文档

README

1.0.4

支付宝的Yii2扩展包,支持支付宝所有接口,只需更换对应接口的参数即可!

Install With Composer

The preferred way to install this extension is through composer.

Either run

php composer.phar require qianlizeguo/yii2-alipay "*"

or for the dev-master

php composer.phar require qianlizeguo/yii2-alipay "dev"

Or, you may add

"qianlizeguo/yii2-alipay": "*"

to the require section of your composer.json file and execute php composer.phar update.

Usage

Once the extension is installed, simply modify your application configuration as follows:

return [
    'alipayPartner' => '2088411622500000',
    'alipaySellerEmail' => 'xxx@xxx.com.cn',
    'alipayKey' => 'j8zjlejjebpgei98cbbgbbmwfr4asdf',
];

AlipayController

这是一个批量付款的栗子,支付宝其它接口换成相应的接口即可使用

<?php
/**
 * User: fix
 * Date: 16/7/4
 * Time: 上午9:40
 */

namespace backend\controllers\pay;


use yii;
use yii\log\Logger;
use qianlizeguo\alipay\AlipayNotify;
use qianlizeguo\alipay\AlipayConfig;
use qianlizeguo\alipay\AlipaySubmit;
use yii\web\Controller;

class AlipayController extends Controller
{

    public function beforeAction($action)
    {
        if ('notify' == $action->id) {
            $this->enableCsrfValidation = false;
        }
        return parent::beforeAction($action);
    }

    public function actionIndex()
    {
        /**************************请求参数**************************/

        //服务器异步通知页面路径
        $notify_url = Yii::$app->urlManager->createAbsoluteUrl(['pay/alipay/notify']);
        //需http://格式的完整路径,不允许加?id=123这类自定义参数

        //付款账号
        $email = $_POST['WIDemail'];
        //必填

        //付款账户名
        $account_name = "北京纽斯洛网络科技有限公司";
        //必填,个人支付宝账号是真实姓名公司支付宝账号是公司名称

        //付款当天日期
        $pay_date = date("Y-m-d");
        //必填,格式:年[4位]月[2位]日[2位],如:20100801

        //批次号
        $batch_no = date("YmdHis");
        //必填,格式:当天日期[8位]+序列号[3至16位],如:201008010000001

        //付款总金额
        $batch_fee = 0.02;
        //必填,即参数detail_data的值中所有金额的总和

        //付款笔数
        $batch_num = 2;
        //必填,即参数detail_data的值中,“|”字符出现的数量加1,最大支持1000笔(即“|”字符出现的数量999个)

        //付款详细数据
        $detail_data = "流水号1^收款方帐号1^真实姓名^0.01^测试付款1,这是备注|流水号2^收款方帐号2^真实姓名^0.01^测试付款2,这是备注";
        //必填,格式:流水号1^收款方帐号1^真实姓名^付款金额1^备注说明1|流水号2^收款方帐号2^真实姓名^付款金额2^备注说明2....


        /************************************************************/

        $alipayConfig = (new AlipayConfig())->getAlipayConfig();

        //构造要请求的参数数组,无需改动
        $parameter = array(
            "service" => "batch_trans_notify",
            "partner" => trim($alipayConfig['partner']),
            "notify_url"	=> $notify_url,
            "email"	=> trim($alipayConfig['seller_email']),
            "account_name"	=> $account_name,
            "pay_date"	=> $pay_date,
            "batch_no"	=> $batch_no,
            "batch_fee"	=> $batch_fee,
            "batch_num"	=> $batch_num,
            "detail_data"	=> $detail_data,
            "_input_charset"	=> trim(strtolower($alipayConfig['input_charset']))
        );

        //建立请求
        $alipaySubmit = new AlipaySubmit($alipayConfig);
        $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
        return $html_text;
    }

    public function actionNotify()
    {
        $alipayConfig = (new AlipayConfig())->getAlipayConfig();

        Yii::getLogger()->log("alipay Notify Start", Logger::LEVEL_ERROR);

        Yii::getLogger()->log("↓↓↓↓↓↓↓↓↓↓alipayConfig↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓", Logger::LEVEL_ERROR);
        Yii::getLogger()->log(print_r($alipayConfig, true), Logger::LEVEL_ERROR);

        $notify = new AlipayNotify($alipayConfig);
        if ($notify->verifyNotify()) {
            Yii::getLogger()->log('verify Notify success', Logger::LEVEL_ERROR);

            //通知时间  2009-08-12 11:08:32
            $notify_time = Yii::$app->request->post('notify_time');

            //通知类型  batch_trans_notify
            $notifyType = Yii::$app->request->post('notify_type');

            //通知校验ID    70fec0c2730b27528665af4517c27b95
            $notifyId = Yii::$app->request->post('notify_id');

            //签名方式  MD5
            $signType = Yii::$app->request->post('sign_type');

            //签名    e7d51bf34a1317714d93fab13bbeab73
            $sign = Yii::$app->request->post('sign');

            //批次号
            $batchNo = Yii::$app->request->post('batch_no');

            //付款账号ID
            $payUserId = Yii::$app->request->post('pay_user_id');

            //付款账号姓名
            $payUserName = Yii::$app->request->post('pay_user_name');

            //付款账号
            $payAccountNo = Yii::$app->request->post('pay_account_no');

            //批量付款数据中转账成功的详细信息
            $successDetails = Yii::$app->request->post('success_details');

            //批量付款数据中转账失败的详细信息
            $failDetails = Yii::$app->request->post('fail_details');
            
				//请在这里加上商户的业务逻辑程序代
				    
				//判断是否在商户网站中已经做过了这次通知返回的处理
				//如果没有做过处理,那么执行商户的业务程序
				//如果有做过处理,那么不执行商户的业务程序

            return "success";
        } else {
            Yii::getLogger()->log('verify Notify failed', Logger::LEVEL_ERROR);
            return "fail";
        }
    }

}

qianlizeguo/yii2-alipay 适用场景与选型建议

qianlizeguo/yii2-alipay 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 08 月 22 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「yii2」 「alipay」 「支付宝」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 qianlizeguo/yii2-alipay 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 qianlizeguo/yii2-alipay 我们能提供哪些服务?
定制开发 / 二次开发

基于 qianlizeguo/yii2-alipay 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 7
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2020-08-22