tradePay.js 3.7 KB

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