tradePay.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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. orderStr: "",
  117. }
  118. ) {
  119. const obj = tradeData.orderStr
  120. ? { orderStr: tradeData.orderStr }
  121. : { tradeNO: tradeData.tradeNo };
  122. return new Promise((resolve, reject) => {
  123. my.tradePay({
  124. // tradeNO: tradeData.tradeNo,
  125. ...obj,
  126. success(payRes) {
  127. // 4000 订单处理失败
  128. // 6001 用途中途取消支付
  129. // 6002 网络链接出错
  130. if (
  131. payRes.resultCode === "4000" ||
  132. payRes.resultCode === "6002" ||
  133. payRes.resultCode === "6001"
  134. ) {
  135. // 支付失败
  136. reject(
  137. compareResult({
  138. success: false,
  139. payRes,
  140. })
  141. );
  142. } else {
  143. // 其他情况调用接口确认
  144. triggerPay({
  145. tradeNo: tradeData.tradeNo,
  146. outTradeNo: tradeData.outTradeNo,
  147. resultCode: payRes.resultCode,
  148. }).then((r) => {
  149. if (r.status === "TRADE_SUCCESS") {
  150. resolve(
  151. compareResult({
  152. success: true,
  153. payRes,
  154. })
  155. );
  156. } else {
  157. reject(
  158. compareResult({
  159. success: false,
  160. payRes,
  161. })
  162. );
  163. }
  164. });
  165. }
  166. },
  167. fail: (payRes) => {
  168. // 订单支付异常
  169. reject(
  170. compareResult({
  171. success: false,
  172. payRes,
  173. })
  174. );
  175. },
  176. });
  177. });
  178. } // 验证支付结果
  179. function triggerPay(param) {
  180. return tradeResult(param);
  181. }
  182. export default {
  183. tradePay,
  184. };