pay.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "use strict";
  2. const common_vendor = require("../common/vendor.js");
  3. const common_request = require("../common/request.js");
  4. let request = new common_request.Request().http;
  5. const api = {
  6. // 支付
  7. zfbPayment: "/app/live/liveOrder/aliPayment",
  8. // 支付宝付款
  9. weChatPayment: "/app/live/liveOrder/weChatPayment"
  10. // 微信付款
  11. // updateConfirm: (orderId, type) => `/app/live/liveOrder/updateConfirm/${orderId}/${type} `, // 取消/支付订单确认
  12. };
  13. function weChatPayment(data) {
  14. return new Promise((resolve, reject) => {
  15. request(api.weChatPayment, data, "POST", "application/json;charset=UTF-8").then((res) => {
  16. invokePayment(res.data).then(resolve).catch((err) => {
  17. handlePaymentError(err);
  18. reject(err);
  19. });
  20. }).catch((err) => {
  21. handlePaymentError(err);
  22. reject(err);
  23. });
  24. });
  25. }
  26. function invokePayment(payData) {
  27. return new Promise((resolve, reject) => {
  28. common_vendor.index.requestPayment({
  29. provider: "wxpay",
  30. ...payData,
  31. // 直接展开小程序所需参数
  32. success: (res) => {
  33. common_vendor.index.showToast({
  34. title: "支付成功"
  35. });
  36. resolve(res);
  37. },
  38. fail: (err) => {
  39. reject(new Error(formatError(err)));
  40. }
  41. });
  42. });
  43. }
  44. function formatError(err) {
  45. if (err.errMsg) {
  46. if (err.errMsg.includes("cancel"))
  47. return "支付已取消";
  48. if (err.errMsg.includes("fail"))
  49. return "支付失败";
  50. }
  51. return err.message || "支付异常";
  52. }
  53. function handlePaymentError(err) {
  54. console.error("[支付错误]", err);
  55. common_vendor.index.showToast({
  56. title: err.message,
  57. icon: "none",
  58. duration: 3e3
  59. });
  60. }
  61. exports.weChatPayment = weChatPayment;