NodeJs
1. 安装#
您可以使用包管理器来安装 ksher-pay SDK。
1.1. npm#
npm install ksher-pay
1.2. yarn#
yarn add ksher-pay
2. 如何使用#
2.1. 准备配置数据#
// 请使用您自己的主机地址和令牌
const setting = {
"host": "https://sandboxdoc.vip.ksher.net",
"token": "your token",
}
2.2. 导入 SDK 并进行初始化#
const PaymentSDK = require("ksher-payment");
const MySDK = new PaymentSDK(setting);
// 小程序 SDK
const miniAppSDK = require('ksher-payment/src/miniapp')
const MyMiniAppSDK = new miniAppSDK(setting);
2.3. 创建订单#
const data = {
note: "Note to this order",
redirect_url: "http://www.baidu.com",
redirect_url_fail: "http://www.baidu.com",
timestamp: "1623058159665", // 时间戳
amount: 100, // 货币单位是“分”,例如:表示1泰铢,需要输入100。
merchant_order_id: "202106070001" // 需要唯一,两次请求不能相同
}
MySDK.orderCreate(data).then(({
data
}) => {
console.log(data) // 订单创建成功
console.log(data.reference) // 支付请求地址
}).catch(err => {
console.log(err) //error
})
2.4. 查询订单状态#
const order_id = "202106070001" // merchant_order_id
const data = {
timestamp: "1623058159665",
}
MySDK.orderQuery(order_id, data).then(({
data
}) => {
console.log(data)
}).catch(err => {
console.log(err)
})
2.5. 退款#
const order_id = '202106070001'
const data = {
refund_order_id: "123456789001",
timestamp: "1623058159665",
refund_amount: 100
}
MySDK.orderRefund(order_id, data).then(({
data
}) => {
console.log(data)
}).catch(err => {
console.log(err)
})
2.6. 在支付宝小程序中收款#
2.6.1. 获取 orderStr#
const data = {
amount: 100, // 货币单位是“分”,例如:表示1泰铢,需要输入100。
merchant_order_id: "202106070001", // 需要唯一,两次请求不能相同
timestamp: "1623058159665",
note: 'some note for this order',
channel: 'alipay',
miniapp_openid: 'alipayOpenId', // 用户的支付宝OpenId
miniapp_appid: 'alipayAppid', // 用户的支付宝小程序AppId
}
MyMiniAppSDK.orderCreate(data).then(({
data
}) => {
console.log(data)
console.log(data.reference) // orderStr
}).catch(err => {
console.log(err)
})
2.6.2. 在支付宝小程序中支付#
// 在支付宝小程序中运行
my.tradePay({
orderStr: 'the reference value'
})
2.7. 验证签名#
验证来自webhook请求的签名
const webhookUrl = 'https://your-host.com/api/webhook'; // 你的webhook链接
const data = {
type: 'Order',
instance: '1623817182537',
code: 'StatusChange',
message: 'Order Paid',
signature: '944EFC0C6DB000A28C7BACEC6709AF119586F4E361F908DEAC576DA937A6F746'
}
const valid = MySDK.checkSignature(webhookUrl, data)
if (valid) {
console.log('success')
}
3. 引用#
SDK 的源代码托管在github中,欢迎您提出问题和Pull Request。