这是emlog建站系统的一款插件。要使用此插件,您需要先安装emlog系统。
安装教程
无代码加密 无额外授权 版本号:1.2.1
适配PHP:56,74,81
支付SDK
通用的支付插件,方便对接支付平台,目前只支持支付宝支付、虎皮椒支付。
🚨该插件需要配合其他应用主题或者插件来实现下单购买的功能,仅仅安装该插件没任何意义
支付宝
签约开通支付宝当面付
- 注册并登录支付宝开放平台,完成个人或者企业认证
- 申请开通支付宝当面付:按照提示完成当面付产品的签约(当面付个人认证用户提供办公场所照片也可以完成申请)。
- 创建一个网页移动应用,得到
APPID
- 进入应用开发设置:应用的加密方式为:密钥方式,最终会得到:
应用私钥
、支付宝公钥
- 进入应用开发设置:填写应用网关和授权回调地址,具体地址由使用该SDK的应用提供。
设置本插件
- 进入插件设置页面:填写上一步得到的
APPID
、应用私钥
、支付宝公钥
- 设置完成即可,返回具体应用检查是否能唤起支付。
开发对接支付宝当面付
对接部分针对应用开发者,普通用户忽略
发起当面付,获得支付二维码
<?php
$sku_id = Input::postIntVar('sku_id');
$sku_name = 'xxxxx';
$pay_type = 'alipay';
$pay_notify_url = BLOG_URL . 'user/order_callback';
$sku_info = $Log_Model->getDetail($sku_id);
$price = $sku_info['fields']['price'];
if ($price <= 0) {
Output::error('价格错误', 200);
}
$Order_Model = new Order_Model('appname');
$order_id = $Order_Model->createOrder(UID, $pay_type, $sku_name, $sku_id, $price);
$paySdk = EmAliPaySdk::getInstance();
$response = $paySdk->createFaceToFacePayment($order_id, $price, '购买付费资源', $pay_notify_url);
if ($response['success']) {
$qrCode = $response['qr_code'];
Output::ok(['qrcode_url' => "https://api.qrserver.com/v1/create-qr-code/?data={$qrCode}", 'order_id' => $order_id, 'sku_id' => $sku_id], 200);
} else {
Output::error($response['message'], 200);
}
发起网页支付 (需要签约支付宝网页支付)
<?php
$sku_id = Input::postIntVar('sku_id');
$sku_name = 'xxxxx';
$pay_type = 'alipay';
$return_url= BLOG_URL . '?post=' . $sku_id;
$sku_info = $Log_Model->getDetail($sku_id);
$price = $sku_info['fields']['price'];
if ($price <= 0) {
Output::error('价格错误', 200);
}
$Order_Model = new Order_Model('appname');
$order_id = $Order_Model->createOrder(UID, $pay_type, $sku_name, $sku_id, $price);
$paySdk = EmAliPaySdk::getInstance();
$paySdk->createWebPayment($order_id, $price, $return_url);
支付回调
<?php
$request = $_POST;
header('Content-Type: application/json');
if (empty($request)) {
Output::error('参数错误', 200);
}
$paySdk = EmAliPaySdk::getInstance();
$result = $paySdk->handleFaceToFaceCallback($request);
if ($result) {
$out_trade_no = isset($request['out_trade_no']) ? $request['out_trade_no'] : '';
$Order_Model = new Order_Model('appname');
$data = [
'order_id' => $out_trade_no,
'pay_price' => $result['total_amount'],
'out_trade_no' => $result['trade_no'],
'update_time' => time(),
];
$Order_Model->updateOrder($out_trade_no, $data);
Output::ok('success', 200);
} else {
Output::error('fail', 200);
}
虎皮椒支付
虎皮椒支付是一个个人支付接口平台,支持微信和支付宝收款。
支付方式:
- 跳转网页支付:用户点击支付链接跳转到虎皮椒支付页面完成支付
- 二维码扫码支付:生成支付二维码,用户扫码完成支付(本地二维码支付模式)
申请虎皮椒支付
- 注册并登录 虎皮椒支付平台
- 完成实名认证和商户认证
- 创建应用,获得
APPID
和APPSECRET
- 配置支付网关地址(默认为官方网关)
- 设置异步通知地址和同步跳转地址
设置本插件
- 进入插件设置页面,切换到"虎皮椒支付"选项卡
- 填写从虎皮椒平台获得的
APPID
、APPSECRET
- 确认网关地址(通常使用默认值即可)
- 设置完成即可,返回具体应用检查是否能正常支付
开发对接虎皮椒支付
对接部分针对应用开发者,普通用户忽略
发起虎皮椒支付
<?php
$sku_id = Input::postIntVar('sku_id');
$sku_name = 'xxxxx';
$pay_type = 'xunhu';
$notify_url = BLOG_URL . 'user/order_callback';
$return_url = BLOG_URL . '?post=' . $sku_id;
$sku_info = $Log_Model->getDetail($sku_id);
$price = $sku_info['fields']['price'];
if ($price <= 0) {
Output::error('价格错误', 200);
}
$Order_Model = new Order_Model('appname');
$order_id = $Order_Model->createOrder(UID, $pay_type, $sku_name, $sku_id, $price);
$paySdk = EmXunhuPaySdk::getInstance();
$response = $paySdk->createPayment($order_id, $price, $sku_name, $notify_url, $return_url);
if ($response['success']) {
// 支持两种支付方式:网页跳转和二维码支付
echo "支付创建成功!<br>";
echo "订单号:" . $response['order_id'] . "<br>";
echo "支付链接:<a href='" . $response['pay_url'] . "' target='_blank'>点击支付</a><br>";
// 如果有二维码地址,显示二维码支付选项
if (!empty($response['qrcode_url'])) {
echo "二维码支付:<br>";
echo "<img src='" . $response['qrcode_url'] . "' alt='支付二维码' style='width:200px;height:200px;'><br>";
echo "扫描上方二维码完成支付<br>";
}
} else {
Output::error($response['message'], 200);
}
返回结果:
success
: 是否成功order_id
: 订单号pay_url
: 支付链接(跳转网页支付)qrcode_url
: 二维码支付地址(可选,用于生成二维码支付)
虎皮椒支付回调
<?php
$request = $_POST;
header('Content-Type: text/plain');
if (empty($request)) {
echo 'fail';
exit;
}
$paySdk = EmXunhuPaySdk::getInstance();
$result = $paySdk->handleNotify($request);
if ($result) {
$out_trade_no = isset($request['trade_order_id']) ? $request['trade_order_id'] : '';
$Order_Model = new Order_Model('appname');
$data = [
'order_id' => $out_trade_no,
'pay_price' => $result['total_fee'],
'out_trade_no' => $result['order_id'],
'update_time' => time(),
];
$Order_Model->updateOrder($out_trade_no, $data);
echo 'success';
} else {
echo 'fail';
}
阿六哥哥
铁杆 2025-08-11 14:30:10
希望后续接入微信支付~