You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

121 lines
4.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// #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
&timestamp=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&notify_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