|
|
// #ifdef H5
|
|
|
let jweixin = require('jweixin-module')
|
|
|
// #endif
|
|
|
|
|
|
/* 2022.10.20 兼容了抖音小程序 */
|
|
|
|
|
|
let pay = {}
|
|
|
|
|
|
/**
|
|
|
* 支付
|
|
|
* @param {object} orderInfo 支付参数
|
|
|
* @param {int} pay_type 支付方式 1--微信支付 2--支付宝支付 3-抖音小程序
|
|
|
* @date 2022-10-20
|
|
|
*/
|
|
|
pay.requestPayment = function(orderInfo = {}, pay_type = 1) {
|
|
|
let arr = ['wxpay', 'alipay', 'toutiao']
|
|
|
// 服务提供商
|
|
|
let provider = arr[pay_type - 1]
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
// #ifdef APP-PLUS|MP-WEIXIN|MP-TOUTIAO|MP-ALIPAY
|
|
|
// APP支付、微信小程序、抖音小程序、支付宝小程序
|
|
|
uni.requestPayment({
|
|
|
provider: provider,
|
|
|
|
|
|
// #ifdef APP-PLUS|MP-TOUTIAO|MP-ALIPAY
|
|
|
/* App端,微信支付 orderInfo 为 Object 类型,如下:
|
|
|
{
|
|
|
"appid": "wx5019a7e911f6f88e", 微信开放平台审核通过的应用APPID
|
|
|
"partnerid": "1489696452", 微信支付分配的商户号
|
|
|
"prepayid": "wx31113948217710665d3aef6324702a0000", 微信返回的支付交易会话ID
|
|
|
"noncestr": "635f43844dc08", 随机字符串,不长于32位。
|
|
|
"timestamp": 1667187588, 时间戳
|
|
|
"package": "Sign=WXPay", 暂填写固定值Sign=WXPay
|
|
|
"sign": "7A9F559B3C220416911931CB15C86B63" 签名
|
|
|
}
|
|
|
App端,支付宝支付 orderInfo 为 String 类型,如下:
|
|
|
method=alipay.trade.app.pay
|
|
|
&app_id=2021002128681519
|
|
|
×tamp=2022-11-02+13%3A22%3A23
|
|
|
&format=json
|
|
|
&version=1.0
|
|
|
&alipay_sdk=alipay-easysdk-php-2.2.0
|
|
|
&charset=UTF-8
|
|
|
&sign_type=RSA2
|
|
|
&app_cert_sn=168048eca0315ca9b2c00a2ca54e445c
|
|
|
&alipay_root_cert_sn=687b59193f3f462dd5336e5abf83c5d8_02941eef3187dddf3d3b83462e1dfcf6
|
|
|
&biz_content=%7B%22subject%22%3A%22%E4%BD%99%E9%A2%9D%E5%85%85%E5%80%BC%E8%AE%A2%E5%8D%95%22%2C%22out_trade_no%22%3A%22M202211021322232422%22%2C%22total_amount%22%3A0.01%7D¬ify_url=https%3A%2F%2Ftp.jucheng01.net%2Findex.php%2Fmoney%2Fapi%2FCallback%2FalipayNotify%2Fagent%2Fapp%2Fuid%2F2&sign=H9yN%2BnC5CPCbLIcXdMr0g6XTCtwmzi9P7Jf%2BNgl4WsRNhBQe%2FZJu3YduDF9aDU6Coyht0YJLUoZFZ%2FAnuJcwFuWSSsCvpESTKT0ar8W5DIAWFRpaD1KyIPi7OQwKkA%2F2w2K3LJZHwVcOrJSeIy6%2BRtsOfIfDmyexDioCtR%2Bufb9W0Eklw%2B40KW7lcN8aiWW%2BpK%2BdX6iJvW676VLCKqrHeuweuRDRFeHvndGDeIBhUYJCoEzjUEwYAlko1di6zJC9gd6ehKPB%2F7JUDykCdOOAwnhAKsWGvvUqmrmK6g%2FSze4O4O2UTTjESj%2BKFbdc4YvsqTNXZfZXfW5B%2BDGjNYVCfQ%3D%3D
|
|
|
字节跳动小程序的 orderInfo 为 Object 类型,如下:
|
|
|
order_id--担保交易服务端订单号
|
|
|
order_token--担保交易订单号 token
|
|
|
支付宝小程序的 orderInfo(支付宝的规范为 tradeNO) 为 String 类型,表示支付宝交易号 */
|
|
|
orderInfo: orderInfo,
|
|
|
// #endif
|
|
|
|
|
|
// #ifdef MP-WEIXIN
|
|
|
// 微信小程序 orderInfo.timeStamp时间戳S大写
|
|
|
timeStamp: orderInfo.timeStamp,
|
|
|
nonceStr: orderInfo.nonceStr,
|
|
|
package: orderInfo.package,
|
|
|
signType: orderInfo.signType,
|
|
|
paySign: orderInfo.paySign,
|
|
|
// #endif
|
|
|
|
|
|
// #ifdef MP-TOUTIAO
|
|
|
service: 5,
|
|
|
// #endif
|
|
|
|
|
|
success: (res) => {
|
|
|
// console.log('requestPaymentSuccess')
|
|
|
resolve(res)
|
|
|
},
|
|
|
fail: (err) => {
|
|
|
// console.log('requestPaymentFail')
|
|
|
reject(err)
|
|
|
}
|
|
|
})
|
|
|
// #endif
|
|
|
|
|
|
// #ifdef H5
|
|
|
let user_agent = navigator.userAgent.toLowerCase()
|
|
|
// 微信公众号的微信支付,需要单独调用JSSDK的支付
|
|
|
if (user_agent.indexOf('micromessenger') > 0 && pay_type == 1) {
|
|
|
return jweixin.wxPay({
|
|
|
// 微信公众号的时间戳字段全小写
|
|
|
timestamp: orderInfo.timestamp,
|
|
|
nonceStr: orderInfo.nonceStr,
|
|
|
package: orderInfo.package,
|
|
|
signType: orderInfo.signType,
|
|
|
paySign: orderInfo.paySign
|
|
|
}).then(res => {
|
|
|
console.log(res)
|
|
|
resolve(res)
|
|
|
}).catch(err => {
|
|
|
console.log(err)
|
|
|
console.log('fail:' + JSON.stringify(err))
|
|
|
reject(err)
|
|
|
})
|
|
|
}
|
|
|
// #endif
|
|
|
})
|
|
|
}
|
|
|
|
|
|
// // 支付宝预授权
|
|
|
// uni.requestPayment({
|
|
|
// provider: provider,
|
|
|
// orderStr: orderInfo, //参数名和上面的不太一样
|
|
|
// success: (res) => {
|
|
|
// console.log(res)
|
|
|
// resolve(res)
|
|
|
// },
|
|
|
// fail: (err) => {
|
|
|
// console.log(err)
|
|
|
// console.log('fail:' + JSON.stringify(err))
|
|
|
// reject(err)
|
|
|
// }
|
|
|
// })
|
|
|
|
|
|
|
|
|
export default pay
|