更新记录
2.1.10(2021-04-14)
新增PaySignUtil,用于签名生成和验证支付异步回调签名 修复Order接口查询订单提示405问题
2.1.8(2021-04-08)
新增个人微信APP支付调用示例 新增支付宝APP调用示例 新增微信APP支付、支付宝APP支付调用视频教程 更新示例代码中微信APP两种支付模式 第一种:使用微信H5拉起微信客户端进行支付 第二种:使用原生微信APP支付接口进行支付 示例代码增加支付宝示例
查看更多平台兼容性
app | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 | 快应用 |
---|---|---|---|---|---|---|
3.1.4 app-vue app-nvue | √ | √ | × | × | × | × |
h5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | pc-Safari |
---|---|---|---|---|---|---|---|---|
√ | √ | √ | √ | √ | √ | √ | √ | √ |
YunGouOS-PAY-UniApp-SDK
介绍
YunGouOS微信支付/支付宝官方合作伙伴,YunGouOS-PAY是徐州市云宝网络科技有限公司研发的支付产品。
过去我们只将支付提供给自身系统使用,我们对市面上各种第四方支付深感痛恨 我们深知一些个人用户对支付的渴望。
为此,我们开放了重量级产品,YunGouOS旗下“支付系统”正式对外开放。
我们使命是为更多开发者、个体户、个人创业者、小微企业提供正规的官方支付接口。
基于微信/支付宝官方授权的服务商模式为中小商家提供便捷的支付接入服务。
如何使用
在官网提交资料,由微信/支付宝审核,审核通过后下发商户号,对接使用。
相关地址
接口文档:https://open.pay.yungouos.com
快速上手
视频教程
uniapp开发微信小程序接入个人微信支付接口实战演练(含源码)
uniapp开发APP接入个人微信支付、支付宝接口实战演练(附源码)
示例代码
前言
所有方法均提供了同步和异步两种调用方式,支持Promise化使用
下面以微信扫码支付举例
//同步
WxPay.nativePayAsync
//异步(将方法名结尾的Async去掉即为异步,返回的是Promise对象,按照Promise语法进行后续处理即可)
WxPay.nativePay
一、安装
方式一:NPM安装(推荐)
1、项目根目录命令行执行
npm i yungouos-pay-uniapp-sdk
2、项目中引入
//可按需导入
import {WxPay,AliPay,Finance,Merge,Order,PaySignUtil} from 'yungouos-pay-uniapp-sdk'
二、使用
1、微信支付
//导入微信支付对象
import {WxPay} from 'yungouos-pay-uniapp-sdk'
扫码支付(同步)
let result =await WxPay.nativePayAsync(out_trade_no, total_fee, mch_id, body, type, attach, notify_url, auto, auto_node, config_no,biz_params, payKey);
//二维码链接地址
console.log(result);
扫码支付(异步)
WxPay.nativePay(out_trade_no, total_fee, mch_id, body, type, attach, notify_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
刷卡支付(同步)
let result =await WxPay.codePayAsync(out_trade_no, total_fee, mch_id, body, auth_code, attach,receipt,notify_url, auto, auto_node, config_no,biz_params, payKey);
刷卡支付(异步)
WxPay.codePay(out_trade_no, total_fee, mch_id, body, auth_code, attach,receipt,notify_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
公众号支付/JSAPI(同步)
let result =await WxPay.jsapiPayAsync(out_trade_no, total_fee, mch_id, body, openId, attach, notify_url, auto, auto_node, config_no,biz_params, payKey);
公众号支付/JSAPI(异步)
WxPay.jsapiPay(out_trade_no, total_fee, mch_id, body, openId, attach, notify_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
收银台支付(同步)
let result =await WxPay.cashierPayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url, auto, auto_node, config_no,biz_params, payKey);
收银台支付(异步)
WxPay.cashierPay(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
个人小程序支付(直接拉起支付)
WxPay.minAppPay(out_trade_no, total_fee, mch_id, body, attach, title, notify_url, auto, auto_node, config_no, biz_params, payKey);
个人小程序支付(返回参数需要自行拉起)
let params=WxPay.minAppPayParams(out_trade_no, total_fee, mch_id, body, attach, title, notify_url, auto, auto_node, config_no, biz_params, payKey);
uni.navigateToMiniProgram({
appId: 'wxd9634afb01b983c0',//支付收银小程序的appid 固定值 不可修改
path: '/pages/pay/pay',//支付页面 固定值 不可修改
extraData: params,//携带的参数 参考API文档
success(res) {
console.log("小程序拉起成功");
}
})
小程序支付【个体户/企业】(同步)
let result = await WxPay.minAppPayBusinessAsync(out_trade_no, total_fee, mch_id, body, openId, attach, notify_url, auto, auto_node, config_no, biz_params, payKey);
let data=result.minPayParam;
if(data==null||data==''||data==undefined){
console.log("支付失败");
return;
}
let minPayParam = JSON.parse(data);
//构建支付成功方法
minPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
console.log("小程序支付成功");
}
}
//构建支付失败方法
minPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
}
}
//拉起小程序支付界面
uni.requestPayment(minPayParam);
小程序支付【个体户/企业】(异步)
WxPay.minAppPayBusiness(out_trade_no, total_fee, mch_id, body, openId, attach, notify_url, auto, auto_node, config_no, biz_params, payKey).then((response)=>{
//接口返回结果
if(response.code!=0||response.data==null){
console.log("支付失败");
return;
}
let result=response.data;
let data=result.minPayParam;
if(data==null||data==''||data==undefined){
console.log("支付失败");
return;
}
let minPayParam = JSON.parse(data);
//构建支付成功方法
minPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
console.log("小程序支付成功");
}
}
//构建支付失败方法
minPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
}
}
//拉起小程序支付界面
uni.requestPayment(minPayParam);
});
刷脸支付(同步)
let result =await WxPay.facePayAsync(out_trade_no, total_fee, mch_id, body, openId, face_code, attach, notify_url, auto, auto_node, config_no, biz_params,payKey);
刷脸支付(异步)
WxPay.facePay(out_trade_no, total_fee, mch_id, body, openId, face_code, attach, notify_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
H5支付(同步)
let result =await WxPay.wapPayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url, auto, auto_node, config_no, biz_params,payKey);
H5支付(异步)
WxPay.wapPay(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
APP支付(H5拉起)
let result =await WxPay.wapPayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url, auto, auto_node, config_no, biz_params,payKey);
let wv = plus.webview.create("", "pay-webview", {
plusrequire: "none",
'uni-app': 'none',
}
);
wv.loadURL(result,{Referer:'H5绑定的域名'});
var currentWebview = this.$scope.$getAppWebview();
currentWebview.append(wv);
wv.hide();
APP支付(同步)
let result =await WxPay.appPayAsync(app_id, out_trade_no, total_fee, mch_id, body, attach, notify_url, auto, auto_node, config_no,biz_params, payKey);
if(result==null||result==''||result==undefined){
console.log("支付失败");
return;
}
let orderInfo=JSON.parse(result);
let appPayParam={};
appPayParam.orderInfo=orderInfo;
appPayParam.provider="wxpay";
//构建支付成功方法
appPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
console.log("APP支付成功");
uni.showToast({
title:"支付成功",
icon:'success'
});
}
}
//构建支付失败方法
appPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
uni.showToast({
title:"取消支付"
});
}
}
//拉起微信APP支付
uni.requestPayment(appPayParam);
APP支付(异步)
WxPay.appPay(app_id, out_trade_no, total_fee, mch_id, body, attach, notify_url, auto, auto_node, config_no,biz_params, payKey).then((response)=>{
//接口返回结果
if(response.code!=0||response.data==null){
console.log("支付失败");
return;
}
let result=response.data;
if(result==null||result==''||result==undefined){
console.log("支付失败");
return;
}
let orderInfo = JSON.parse(result);
let appPayParam={};
appPayParam.orderInfo=orderInfo;
appPayParam.provider="wxpay";
//构建支付成功方法
appPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
console.log("支付成功");
uni.showToast({
title:"支付成功",
icon:'success'
});
}
}
//构建支付失败方法
appPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
uni.showToast({
title:"取消支付"
});
}
}
//拉起微信APP支付
uni.requestPayment(appPayParam);
});
订单退款(同步)
let result =await WxPay.refundAsync(out_trade_no, mch_id, money, refund_desc,notify_url, payKey);
订单退款(异步)
WxPay.refund(out_trade_no, mch_id, money, refund_desc,notify_url, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
查询退款结果(同步)
let result =await WxPay.getRefundResultAsync(refund_no, mch_id, payKey);
查询退款结果(异步)
WxPay.getRefundResult(refund_no, mch_id, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
下载对账单(同步)
let result =await WxPay.downloadBillAsync(mch_id, date,end_date,device_info, payKey);
下载对账单(异步)
WxPay.downloadBill(mch_id, date,end_date,device_info,payKey).then((response)=>{
//接口返回结果
console.log(response);
});
2、支付宝
//导入支付宝对象
import {AliPay} from 'yungouos-pay-uniapp-sdk'
扫码支付(同步)
let result =await AliPay.nativePayAsync(out_trade_no, total_fee, mch_id, body, type, attach, notify_url,hbfq_num,hbfq_percent,payKey);
//二维码链接地址
console.log(result);
扫码支付(异步)
AliPay.nativePay(out_trade_no, total_fee, mch_id, body, type, attach, notify_url,hbfq_num,hbfq_percent, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
wap支付(同步)
let result =await AliPay.wapPayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url,hbfq_num,hbfq_percent, payKey);
//wap支付链接地址
console.log(result);
wap支付(异步)
AliPay.wapPay(out_trade_no, total_fee, mch_id, body, attach, notify_url,hbfq_num,hbfq_percent, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
js支付(同步)
let result =await AliPay.jsPayAsync(out_trade_no, total_fee, mch_id,buyer_id,body, attach, notify_url,hbfq_num,hbfq_percent, payKey);
//支付宝JSSDK所需的参数
console.log(result);
js支付(异步)
AliPay.jsPay(out_trade_no, total_fee, mch_id,buyer_id,body, attach, notify_url,hbfq_num,hbfq_percent, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
H5支付(同步)
let result =await AliPay.h5PayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url,hbfq_num,hbfq_percent, payKey);
//H5支付表单
console.log(result);
H5支付(异步)
AliPay.h5Pay(out_trade_no, total_fee, mch_id, body, attach, notify_url, return_url,hbfq_num,hbfq_percent, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
app支付(同步)
let result =await AliPay.appPayAsync(out_trade_no, total_fee, mch_id, body, attach, notify_url,hbfq_num,hbfq_percent, payKey);
if(result==null||result==''||result==undefined){
console.log("支付失败");
return;
}
//APP支付所需的参数
let appPayParam={};
appPayParam.orderInfo=result;
appPayParam.provider="alipay";
//构建支付成功方法
appPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
console.log("APP支付成功");
//调用查询订单
uni.showToast({
title:"支付成功",
icon:'success'
});
}
}
//构建支付失败方法
appPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
uni.showToast({
title:"取消支付"
});
}
}
//拉起支付宝APP支付
uni.requestPayment(appPayParam);
app支付(异步)
AliPay.appPay(out_trade_no, total_fee, mch_id, body, attach, notify_url,hbfq_num,hbfq_percent, payKey).then((response)=>{
//接口返回结果
if(response.code!=0||response.data==null){
console.log("支付失败");
return;
}
let result=response.data;
if(result==null||result==''||result==undefined){
console.log("支付失败");
return;
}
let appPayParam={};
appPayParam.orderInfo=result;
appPayParam.provider="alipay";
//构建支付成功方法
appPayParam.success = (response) => {
if (response.errMsg == 'requestPayment:ok') {
//支付成功
uni.showToast({
title:"支付成功",
icon:'success'
});
}
}
//构建支付失败方法
appPayParam.fail = (response) => {
if (response.errMsg == 'requestPayment:fail cancel') {
//取消支付
console.log("取消支付");
uni.showToast({
title:"取消支付"
});
}
}
//拉起支付宝APP支付
uni.requestPayment(appPayParam);
});
发起退款(同步)
let result =await AliPay.refundAsync(out_trade_no, mch_id, money, refund_desc, payKey);
//发起退款结果
console.log(result);
发起退款(异步)
AliPay.refund(out_trade_no, mch_id, money, refund_desc, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
查询退款结果(同步)
let result =await AliPay.getRefundResultAsync(out_trade_no, mch_id, money, refund_desc, payKey);
//查询退款结果
console.log(result);
查询退款结果(异步)
AliPay.getRefundResult(out_trade_no, mch_id, money, refund_desc, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
3、支付分账
//导入转账对象
import {Finance} from 'yungouos-pay-uniapp-sdk'
微信支付配置分账账户(同步)
let result =await Finance.wxPayConfigAsync(mch_id, appId, reason,openId, receiver_mch_id, name, rate, money, payKey);
//配置分账结果
console.log(result);
微信支付配置分账账户(异步)
Finance.wxPayConfig(mch_id, appId, reason,openId, receiver_mch_id, name, rate, money, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
支付宝配置分账账户(同步)
let result =await Finance.aliPayConfigAsync(mch_id, reason,account, name, rate, money, payKey);
//配置分账结果
console.log(result);
支付宝配置分账账户(异步)
Finance.aliPayConfig(mch_id, reason,account, name, rate, money, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
生成分账账单(同步)
let result =await Finance.createBillAsync(mch_id, out_trade_no, config_no, payKey);
//生成分账账单结果
console.log(result);
生成分账账单(异步)
Finance.createBill(mch_id, out_trade_no, config_no, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
发起分账支付(同步)
let result =await Finance.sendPayAsync(mch_id, ps_no, description, payKey);
//发起分账支付结果
console.log(result);
发起分账支付(异步)
Finance.sendPay(mch_id, ps_no, description, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
查询分账支付结果(同步)
let result =await Finance.getPayResultAsync(mch_id, ps_no, payKey);
//查询分账支付结果
console.log(result);
查询分账支付结果(异步)
Finance.getPayResult(mch_id, ps_no, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
完结分账(同步)
let result =await Finance.finishAsync(mch_id, out_trade_no, payKey);
//完结分账结果
console.log(result);
完结分账(异步)
Finance.finish(mch_id, out_trade_no, payKey).then((response)=>{
//接口返回结果
console.log(response);
});
4、转账代付
//导入转账对象
import {Finance} from 'yungouos-pay-uniapp-sdk'
转账到微信零钱(同步)
let result =await Finance.rePayWxPayAsync(merchant_id, out_trade_no, account, account_name, money, desc, mch_id, key);
//微信转账结果
console.log(result);
转账到微信零钱(异步)
Finance.rePayWxPay(merchant_id, out_trade_no, account, account_name, money, desc, mch_id, key).then((response)=>{
//接口返回结果
console.log(response);
});
转账到支付宝(同步)
let result =await Finance.rePayAliPayAsync(merchant_id, out_trade_no, account, account_name, money, desc, mch_id, key);
//支付宝转账结果
console.log(result);
转账到支付宝(异步)
Finance.rePayAliPay(merchant_id, out_trade_no, account, account_name, money, desc, mch_id, key).then((response)=>{
//接口返回结果
console.log(response);
});
5、订单查询
//导入订单对象
import {Order} from 'yungouos-pay-uniapp-sdk'
查询订单(同步)
let result =await Order.getOrderInfoAsync(out_trade_no,mch_id,payKey);
//订单查询结果
console.log(result);
查询订单(异步)
Order.getOrderInfo(out_trade_no,mch_id,payKey).then((response)=>{
//接口返回结果
console.log(response);
});
6、签名工具
//导入签名工具对象
import {PaySignUtil} from 'yungouos-pay-uniapp-sdk'
//参数签名
let sign=PaySignUtil.paySign(params, key);
//验证签名(对应的参数值从异步回调请求中获取)
let params={
code:code,
orderNo:orderNo,
outTradeNo:outTradeNo,
payNo:payNo,
money:money,
mchId:mchId
}
let sign="从异步回调请求中获取";
let key="支付商户号(mchId)对应的支付密钥";
let result=PaySignUtil.checkNotifySign(params,sign,key);