这是emlog建站系统的一款插件。要使用此插件,您需要先安装emlog系统。
安装教程
无代码加密 无额外授权 版本号:1.3.5
适配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);
}
易支付
易支付是一套支付框架,基于这套框架可以搭建属于自己的易支付平台。市面上也有很多易支付平台,请仔细甄别,避免资金损失。
1、下单接口
$sku_id = Input::postIntVar('sku_id');
$sku_name = Input::postStrVar('sku_name');
$pay_type = Input::postStrVar('pay_type', 'alipay');
$pay_notify_url = BLOG_URL . 'user/order_callback'; // 支付成功后,易支付会回调该地址
$pay_return_url = BLOG_URL . 'user/order'; // 支付成功后跳转的页面
// 获取商品价格
$sku_info = $Log_Model->getDetail($sku_id);
$price = $sku_info['fields']['price'];
// 创建订单
$Order_Model = new Order_Model('wind-max');
$order_id = $Order_Model->createOrder(UID, $pay_type, $sku_name, $sku_id, $price);
$easyPay = EmEasyPaySdk::getInstance();
$result = $easyPay->createPageJumpPayment($order_id, $price, $sku_title, $pay_notify_url, $pay_return_url);
if ($result['success'] && isset($result['gateway_url'])) {
Output::ok(['gateway_url' => $result['gateway_url'], 'order_id' => $result['order_id'], 'params' => $result['params']], 200);
} else {
Output::error(isset($result['message']) ? $result['message'] : '易支付创建失败', 200);
}
2、 前台js请求下单接口
前台js请求下单接口,利用下单接口返回的数据,构建form表单直接post提交跳转到支付页面,演示js代码如下:
// 支付按钮
<form id="payment-form-easypay" action="order_pay" method="post" class="space-y-4">
<input type="hidden" id="sku_id" name="sku_id" value="<?= $sku_id ?>">
<input type="hidden" id="sku_name" name="sku_name" value="<?= $sku_name ?>">
<button type="submit" class="py-2 px-4 bg-green-600 hover:bg-green-700 focus:ring-green-500 focus:ring-offset-green-200 text-white w-full transition ease-in duration-200 text-center text-base font-semibold shadow-md focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-lg flex items-center justify-center space-x-2">
<span>去支付</span>
</button>
</form>
// ajax请求下单接口
$('#payment-form-easypay').on('submit', function(e) {
e.preventDefault();
const formData = $(this).serialize();
$.ajax({
url: $(this).attr('action'),
type: 'POST',
data: formData,
success: function(response) {
if (response.code === 0) {
generateAndSubmitPaymentForm(response.data.gateway_url, response.data.params);
}
},
error: function() {
cocoMessage.error('发起支付失败,请检查网络连接或稍后再试', 4000)
closeModalWindow();
}
});
});
/**
* 生成支付表单并自动提交,跳转到易支付平台,完成支付后跳转回返回页面
*/
function generateAndSubmitPaymentForm(gateway, params) {
// 创建表单元素
var form = document.createElement('form');
form.id = 'dynamicPaymentForm';
form.method = 'post';
form.action = gateway;
form.style.display = 'none';
// 添加隐藏字段
for (var key in params) {
if (params.hasOwnProperty(key)) {
var input = document.createElement('input');
input.type = 'hidden';
input.name = key;
input.value = params[key];
form.appendChild(input);
}
}
// 将表单添加到页面并提交
document.body.appendChild(form);
form.submit();
// 提交后移除表单
setTimeout(function() {
if (document.body.contains(form)) {
document.body.removeChild(form);
}
}, 100);
}
3、支付成功异步通知回调
$request = $_GET;
if (empty($request)) {
Output::error('参数错误', 200);
}
// 处理易支付回调
$easyPaySdk = EmEasyPaySdk::getInstance();
$result = $easyPaySdk->handleNotify($request);
if ($result) {
$out_trade_no = $result['order_id'];
$Order_Model = new Order_Model('wind-max');
$data = [
'order_id' => $out_trade_no,
'pay_price' => $result['total_amount'],
'out_trade_no' => $result['trade_no'],
'update_time' => time(),
];
$r = $Order_Model->updateOrder($out_trade_no, $data);
// 易支付回调需要返回success
echo 'success';
exit;
} else {
echo 'fail';
exit;
}
虎皮椒支付
虎皮椒支付是一个个人支付接口平台,支持微信和支付宝收款。
支付方式:
- 跳转网页支付:用户点击支付链接跳转到虎皮椒支付页面完成支付
- 二维码扫码支付:生成支付二维码,用户扫码完成支付(本地二维码支付模式)
申请虎皮椒支付
- 注册并登录 虎皮椒支付平台
- 完成实名认证和商户认证
- 创建应用,获得
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
希望后续接入微信支付~