| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- import { createOrderApi } from "../../api/order.api";
- import { throttle } from "../../utils/helper";
- import { getSystemInfo } from "../../utils/wechat";
- /**
- * @description: 内部支付函数
- * @param {*} payParams
- * @return {*}
- */
- const _payment = async (payParams) => {
- try {
- const orderInfo = {
- cp_order_id: payParams.cp_order_id,
- money: payParams.money, // 元单位
- role_id: payParams.role_id,
- role_name: payParams.role_name,
- server_id: payParams.server_id,
- server_name: payParams.server_name,
- ext: payParams.ext ? payParams.ext : "",
- role_level: payParams.role_level,
- product_id: payParams.product_id,
- product_name: payParams.product_name,
- };
- tt.showLoading({
- title: "支付中...",
- mask: true,
- });
- // 下单
- const createOrderResult = await createOrderApi(orderInfo);
- tt.hideLoading({});
- let dyPayConfig = typeof createOrderResult.dy_pay_config !== "undefined" ? createOrderResult.dy_pay_config : {}
- await requestDyPayment(orderInfo, dyPayConfig);
- return Promise.resolve(null);
- } catch (error) {
- return Promise.reject(error);
- }
- };
- /**
- * @description: 安卓虚拟支付
- * @param {object}
- * @return {*}
- */
- export const requestGamePayment = (data) => {
- return new Promise((resolve, reject) => {
- console.log("虚拟支付开始:", data);
- tt.requestGamePayment({
- ...data,
- success: (res) => {
- resolve(res);
- },
- fail: (error) => {
- console.log("虚拟支付失败:", error);
- reject(error);
- },
- });
- });
- };
- /**
- * @description: iOS 虚拟支付 发起钻石支付
- * @param {object}
- * @return {*}
- */
- export const openAwemeCustomerService = (data) => {
- return new Promise((resolve, reject) => {
- console.log("发起钻石支付:", data);
- tt.openAwemeCustomerService({
- ...data,
- success: (res) => {
- resolve(res);
- },
- fail: (error) => {
- console.log("钻石支付失败:", error);
- reject(error);
- },
- });
- });
- };
- /**
- * 拉起抖音支付
- */
- const requestDyPayment = async (orderInfo, dyPayConfig) => {
- let platform = await getSystemInfo("platform");
- try {
- var setGoodType = 0;
- let res;
- // 小额支付描述 https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/open-ability/payment/micropayment-guide
- // 安卓 requestGamePayment
- if(platform==="android"){
- // 判断是否小额支付
- if (tt.canIUse('requestGamePayment.object.goodType')) {
- setGoodType = 2;
- res = await requestGamePayment({
- goodType: setGoodType, // 道具直购
- orderAmount:orderInfo.money * 100, // 单位分
- goodName: orderInfo.product_name,
- currencyType: "CNY",
- zoneId: String(dyPayConfig.zoneId),
- customId: orderInfo.cp_order_id,
- mode: "game",
- env: 0,
- platform: platform, // 目前仅为"android"
- extraInfo: String(setGoodType)
- });
- }else{
- res = await requestGamePayment({
- mode: "game",
- env: 0,
- platform: platform, // 目前仅为"android"
- currencyType: "CNY",
- buyQuantity: dyPayConfig.buyQuantity,
- zoneId: String(dyPayConfig.zoneId),
- customId: orderInfo.cp_order_id,
- });
- }
- }else{
- // 判断是否小额支付
- if (tt.canIUse('openAwemeCustomerService.object.goodType')) {
- setGoodType = 2;
- // iOS openAwemeCustomerService
- res = await openAwemeCustomerService({
- goodType: setGoodType, // 道具直购
- orderAmount: orderInfo.money * 100, // 单位分
- goodName: orderInfo.product_name,
- currencyType: "DIAMOND",
- zoneId: String(dyPayConfig.zoneId),
- customId: orderInfo.cp_order_id,
- extraInfo: String(setGoodType)
- });
- }else{
- // iOS openAwemeCustomerService
- res = await openAwemeCustomerService({
- zoneId: String(dyPayConfig.zoneId),
- customId: orderInfo.cp_order_id,
- currencyType: "DIAMOND",
- buyQuantity: dyPayConfig.buyQuantity,
- });
- }
- }
- return Promise.resolve();
- } catch (error) {
- return Promise.reject(error);
- }
- }
- /**
- * @description:拉起支付(节流版本,避免短时间内重复点击)
- * @param {*} payParams
- * @return {*}
- */
- export const payment = throttle(_payment, 2000);
|