虎皮椒个人微信支付宝免签支付插件



虎皮椒个人免签支付插件,实现网站自动收款。

首先声明:写该插件的原因是正好用到了,虎皮椒开通支付功能是收费的,官方地址https://www.xunhupay.com/,先看一下介绍再考虑是否用我这款插件。


使用方法:

1、上传插件到对应目录,直接进行安装,安装完之后配置一下基础信息。

2、插件目录中有基础订单表的cmf_order.sql,进行安装后即可使用,也可以在此基础上修改。

3、需要在使用的应用目录下新建hooks.php 文件,内容如下:

return [
    'pay' => [
        "type"        => 2,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子)
        "name"        => '虎皮椒发起支付', // 钩子名称
        "description" => "虎皮椒发起支付钩子", //钩子描述
        "once"        => 0 // 是否只执行一次
    ],
    'check_hash' => [
        "type"        => 2,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子)
        "name"        => '虎皮椒Hash校验', // 钩子名称
        "description" => "虎皮椒异步回调Hash校验", //钩子描述
        "once"        => 0 // 是否只执行一次
    ],
];

4、后台插件中心-钩子管理-同步钩子


5、插件列表中对插件进行设置

image.png


image.png


表单中的信息去虎皮椒官网申请即可,异步回调地址填写自己编写的,相关文档需要参看官方文档。


发起支付的简单示例,钩子的使用

// 示例参数
$params = [
    'trade_order_id' => $data['trade_order_id'], // 网站生成的订单编号
    'total_fee'     => $data['total_fee'],// 订单金额
    'title'         => $data['order_title'], // 订单标题
    'time'          => $data['time'], // 时间戳
    'nonce_str'   => $data['nonce_str'] // str_shuffle(time())
];

$result = hook('pay',$params);
$xunhupay_res = json_decode($result[0],true);
if ($xunhupay_res['errcode'] == 0) {
    // 返回必要的数据
    $xunhupay_res['trade_order_id'] = $trade_order_id;
    $xunhupay_res['price']       = $total_fee;
    $this->success('success','',$xunhupay_res);
} else {
    $this->error($xunhupay_res['errmsg']);
}


再写一个异步回调的例子

public function notify_url()
{
    $data = $_POST;
    if (!isset($data['hash']) || !isset($data['trade_order_id'])) {
        echo 'failed';
        exit;
    }

    $res = hook('check_hash',$data);
    if (!$res) { // 签名验证失败
        echo 'failed';
        exit;
    }

    // 商户订单ID
    $trade_order_id = $data['trade_order_id'];
    if ($data['status'] == 'OD') {
        $up_data = [
            'transaction_id'    => !empty($data['transaction_id']) ? $data['transaction_id'] : '',
            'open_order_id'     => !empty($data['open_order_id']) ? $data['open_order_id'] : '',
            'status'            => $data['status'],
            'appid'             => !empty($data['appid']) ? $data['appid'] : '',
            'hash'              => !empty($data['hash']) ? $data['hash'] : '',
        ];
        // 更新订单数据和状态
        Db::name('order')->where('trade_order_id',$trade_order_id)->data($up_data)->update();
    }
    echo 'success';
    exit;
}


如有问题可以联系我!第一次发插件,写的比较啰嗦,就想让大家轻松用上免签的个人支付插件。

ThinkCMF模板插件交流群:550851374 ,领取阿里云1000通用代金券

评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发布插件

七牛专享优惠码

507670e8

ThinkCMF教程


ThinkCMF 6.0.3发布啦,国庆节快乐! 领金秋大礼包! 立即体验!