tradePay.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import { tradeNoForOrder, tradeResult, tradeNoQuery } from "../service/common";
  2. const tradePay = function (params, option = {}) {
  3. // eslint-disable-next-line no-param-reassign
  4. option = Object.assign(
  5. {
  6. useBalance: false,
  7. useMedicare: false,
  8. tradeType: "Appointment", // Outpatient: 门诊缴费; Appointment: 挂号、充值
  9. },
  10. option
  11. );
  12. console.log(params, option);
  13. if (option.tradeType === "Appointment") {
  14. /**
  15. * params 挂号 : { type: 1, idNum: '', depName: '' }
  16. * params 充值 : { type: 2, idNum: '', amount: 0 }
  17. */
  18. return appointment(params);
  19. } else {
  20. /**
  21. * params : { outTradeNo }
  22. */
  23. return outpatient(params);
  24. }
  25. }; // 挂号,充值类订单
  26. function appointment(params) {
  27. return tradeNoQuery(params).then(_tradePay);
  28. } // 门诊类订单
  29. function outpatient(params) {
  30. const {
  31. hisPatientId,
  32. age,
  33. sex,
  34. orderId,
  35. hisOrderNo,
  36. amount,
  37. deptName,
  38. doctorName,
  39. doctorCode,
  40. total,
  41. hisClinicCode,
  42. name,
  43. prescribeDate,
  44. // 医保2.0 新增参数
  45. orderInsType,
  46. payInsType,
  47. consumeType,
  48. totalFee,
  49. medInsFee,
  50. selfFee,
  51. payName,
  52. patName,
  53. invoiceNo,
  54. insuAdmDr,
  55. insUploadFeeResp
  56. } = params;
  57. return tradeNoForOrder({
  58. useBalance: params.useBalance,
  59. // 是否使用就诊卡余额
  60. useMedicare: params.useMedicare,
  61. // 是否使用医保卡余额
  62. outTradeNo: params.outTradeNo, // 商家订单号
  63. // 新增参数
  64. hisPatientId,
  65. age,
  66. sex,
  67. orderId,
  68. hisOrderNo,
  69. amount,
  70. deptName,
  71. doctorName,
  72. doctorCode,
  73. total,
  74. hisClinicCode,
  75. name,
  76. prescribeDate,
  77. // 医保2.0 新增参数
  78. orderInsType,
  79. payInsType,
  80. consumeType,
  81. totalFee,
  82. medInsFee,
  83. selfFee,
  84. payName,
  85. patName,
  86. invoiceNo,
  87. insuAdmDr,
  88. insUploadFeeResp
  89. }).then((tradeData) => {
  90. if (tradeData.tradeNo) {
  91. // 发起支付
  92. return _tradePay(tradeData);
  93. } else {
  94. return Promise.resolve(
  95. compareResult({
  96. success: true,
  97. })
  98. );
  99. }
  100. });
  101. } // 处理支付结果
  102. function compareResult(param) {
  103. console.log(param);
  104. if (!param.success) {
  105. my.showToast({
  106. type: "fail",
  107. content: param.payRes.memo || "订单支付失败",
  108. });
  109. }
  110. return param.success;
  111. }
  112. function _tradePay(
  113. tradeData = {
  114. tradeNo: "",
  115. outTradeNo: "",
  116. }
  117. ) {
  118. return new Promise((resolve, reject) => {
  119. my.tradePay({
  120. tradeNO: tradeData.tradeNo,
  121. success(payRes) {
  122. // 4000 订单处理失败
  123. // 6001 用途中途取消支付
  124. // 6002 网络链接出错
  125. if (
  126. payRes.resultCode === "4000" ||
  127. payRes.resultCode === "6002" ||
  128. payRes.resultCode === "6001"
  129. ) {
  130. // 支付失败
  131. reject(
  132. compareResult({
  133. success: false,
  134. payRes,
  135. })
  136. );
  137. } else {
  138. // 其他情况调用接口确认
  139. triggerPay({
  140. tradeNo: tradeData.tradeNo,
  141. outTradeNo: tradeData.outTradeNo,
  142. resultCode: payRes.resultCode,
  143. }).then((r) => {
  144. if (r.status === "TRADE_SUCCESS") {
  145. resolve(
  146. compareResult({
  147. success: true,
  148. payRes,
  149. })
  150. );
  151. } else {
  152. reject(
  153. compareResult({
  154. success: false,
  155. payRes,
  156. })
  157. );
  158. }
  159. });
  160. }
  161. },
  162. fail: (payRes) => {
  163. // 订单支付异常
  164. reject(
  165. compareResult({
  166. success: false,
  167. payRes,
  168. })
  169. );
  170. },
  171. });
  172. });
  173. } // 验证支付结果
  174. function triggerPay(param) {
  175. return tradeResult(param);
  176. }
  177. export default {
  178. tradePay,
  179. };