快应用封装支付

import { WECHAT_REPAY,ALIPAY } from './api'
import { SERVICE_URL } from './api_base'
import wxpay from '@service.wxpay'
import alipay from '@service.alipay'
import prompt from '@system.prompt'
import router from '@system.router';

// 截取mweb_url里面的prepay_id
const getURLParameter = function (urlStr) {
    return decodeURIComponent(urlStr).split('&').map((query) => query.split('=')).reduce((params, pairs) => (params[pairs[0]] = pairs[1] || '', params), {});
}

// 微信支付
const handleWxPay = function (prepayid, urlStr,orderId) {
    wxpay.pay({
        //微信 app支付的prepayId
        prepayid,
        extra: {
            //传递给支付页面的自定义参数, 根据需要进行设置, 会被urlEncode之后拼接在配置的url尾部
            mweb_url: urlStr,
        },
        fail: function (data, code) {
            console.log(`WX H5 PAY handling fail, code = ${code},data=${data}`)
            if (code == 1000) {
                prompt.showToast({
                    message:"微信未安装,请尝试其他支付方式"
                })
            }
        },
        cancel: function () {
            console.log('WX H5 PAY handling cancel')
        },
        success: function (data) {
            //H5方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成
            // console.log(data, 'WX H5 PAY handling success')
            router.push({
                uri: '/myorder',
                params: {
                    type:'WX', 
                    orderId,
                }
            })
        }
    })
}

// 支付宝支付
const handleZfbPay = function (res,orderId) {
    alipay.pay({
        orderInfo: res,
        callback: function (ret) {
            // console.log(ret, 'handling callback')
            router.push({
                uri: '/myorder',
                params: { 
                    type:'ZFB',
                    orderId,
                }
            })
        }
    })
}


export const payment = (options) => {
    return new Promise((resolve, reject) => {
        const { orderId, payType } = options;
        const payTypes = ["WX", "ZFB"];

        if (!orderId) {
            reject(
                prompt.showToast({
                    message: '订单号无效'
                })
            )
        }

        if (!payTypes.includes(payType)) {
            reject(
                prompt.showToast({
                    message: '支付方式无效'
                })
            )
        }

        try {
            if (payType === "WX") {
                // 通过订单号 获取微信支付参数
                Fetch({
                    url: SERVICE_URL(WECHAT_REPAY.service) + WECHAT_REPAY.url,
                    contentType: 'formData',
                    payload: {
                        order_number: orderId,
                    },
                }).then(res => {
                    let payData = res
                    let prepay_id = getURLParameter(payData.mweb_url.split('?')[1]).prepay_id;
                    handleWxPay(prepay_id, payData.mweb_url,orderId)
                }).catch(err => {
                    reject(
                        prompt.showToast({
                            message: `${err}`
                        })
                    )
                })
            } else if (payType === "ZFB") {
                Fetch({
                    url: SERVICE_URL(ALIPAY.service) + ALIPAY.url,
                    contentType: 'formData',
                    payload: {
                        order_number: orderId,
                        execute_type:'sdk',
                        return_url:"/"
                    },
                }).then(res => {
                    handleZfbPay(res,orderId)
                }).catch(err => {
                    reject(
                        prompt.showToast({
                            message: `${err}`
                        })
                    )
                })
            }
        } catch (error) {
            reject(
                prompt.showToast({
                    message: `${error}`
                })
            )
        }


    })
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS微信支付宝封装是指在iOS平台上对微信支付支付宝支付功能进行封装和集成,方便开发者在自己的应用中集成使用这两种支付方式。 首先,对于微信支付封装,开发者可以使用微信官方提供的iOS SDK进行集成。该SDK包含了微信支付的各种功能和接口,如创建支付订单、发起支付请求、支付结果回调等。开发者只需按照微信提供的文档进行相应的调用和配置,即可实现在自己的应用中使用微信支付功能。 其次,对于支付宝支付封装,同样可以使用支付宝官方提供的iOS SDK进行集成。该SDK包含了支付宝支付的相关功能和接口,如创建支付订单、发起支付请求、支付结果回调等。开发者只需按照支付宝提供的文档进行相应的调用和配置,即可实现在自己的应用中使用支付宝支付功能。 通过对iOS微信支付宝封装,开发者可以在自己的应用中方便地集成和使用微信支付支付宝支付功能,提供给用户更多的支付方式选择,方便用户进行支付操作。同时,封装的过程也可以提高开发效率和代码的复用性,减少开发者的开发工作量。 需要注意的是,为了保证支付过程的安全性和可靠性,开发者在集成和使用支付功能时应按照相关的规范和指引进行操作,确保支付过程的顺利完成和支付信息的安全保密。同时,开发者还需要了解和掌握各种支付方式的使用规则和注意事项,方便根据实际需求进行相应的配置和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值