UmfService.php 86 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326
  1. <?php
  2. namespace LdzfPay\UmfPayService;
  3. use LdzfPay\Api\MerToPlat;
  4. use LdzfPay\Api\Common\StringUtil;
  5. use LdzfPay\Api\Common\SignUtil;
  6. use LdzfPay\Api\Common\HashMap;
  7. use LdzfPay\Api\Common\Logger;
  8. // ---- config ----
  9. // 禁用错误报告
  10. error_reporting(0);
  11. // 报告运行时错误
  12. //error_reporting(E_ERROR | E_WARNING | E_PARSE);
  13. // 报告所有错误
  14. //error_reporting(E_ALL);
  15. // 是否打印日志 true打印 false不打印
  16. define("UMF_LOG_SWITCH", false);
  17. // 日志生成目录
  18. define("UMF_LOG_PATH", "log/UMF_PAY_LOG");
  19. // ---- Common ----
  20. // ini_set('date.timezone','Asia/Shanghai');
  21. // define("UMF_PAY_REQ_URL","https://pay.soopay.net/spay/pay/payservice.do");
  22. // define("UMF_METHOD_GET","get");
  23. // define("UMF_METHOD_POST","post");
  24. //子商户入网
  25. // define("UMF_RESTPAY_AUTHORIZE","https://pay.soopay.net/spay_restPay/oauth/authorize");
  26. // define("UMF_RESTPAY_ADDCHILDMERINFO","https://pay.soopay.net/spay_restPay/addChildMerInfo");
  27. // define("UMF_RESTPAY_UPLOADCHILDFILE","https://pay.soopay.net/spay_restPay/uploadChildFile");
  28. // define("UMF_RESTPAY_CHANGECHILDREBUT","https://pay.soopay.net/spay_restPay/changeChildRebut");
  29. // define("UMF_RESTPAY_SELECTCHILDMERSTATE","https://pay.soopay.net/spay_restPay/selectChildMerState");
  30. class UmfService
  31. {
  32. //当前实例化的商户号
  33. public static $merId = array();
  34. //公钥文件路径
  35. public static $publicKeyPath = "";
  36. //私钥文件路径
  37. public static $privateKeyPath = array();
  38. /**
  39. * http://php.net/manual/zh/language.oop5.decon.php
  40. * the easiest way to use and understand multiple constructors:
  41. */
  42. public function __construct(){
  43. $a = func_get_args();
  44. $i = func_num_args();
  45. if (method_exists($this,$f='__construct'.$i)) {
  46. call_user_func_array(array($this,$f),$a);
  47. }
  48. }
  49. function __construct1($a1){
  50. // echo('__construct with 1 param called: '.$a1.PHP_EOL);
  51. }
  52. function __construct3($a1,$a2,$a3){
  53. // echo('__construct with 3 params called: '.$a1.','.$a2.','.$a3.PHP_EOL);
  54. }
  55. //构造方法
  56. //public function __construct($merId,$publicKeyPath,$privateKeyPath){
  57. public function __construct2($merId,$privateKeyPath){
  58. $mer_id = StringUtil::trim($merId);
  59. //$public_key_path = StringUtil::trim($publicKeyPath);
  60. $private_key_path = StringUtil::trim($privateKeyPath);
  61. if(empty($mer_id)){
  62. die("[UMF SDK] 实例化 UmfService 请传入商户号");
  63. }
  64. //if(empty($public_key_path)){
  65. // die("[UMF SDK] 实例化 UmfService 请传入公钥文件绝对路径");
  66. //}
  67. if(empty($private_key_path)){
  68. die("[UMF SDK] 实例化 UmfService 请传入私钥文件绝对路径");
  69. }
  70. self::$merId[$mer_id] = $mer_id;
  71. //self::$publicKeyPath = $public_key_path;
  72. self::$privateKeyPath[$mer_id] = $private_key_path;
  73. }
  74. public static function addMerPrivateCertMap($merId,$privateKeyPath){
  75. $mer_id = StringUtil::trim($merId);
  76. $private_key_path = StringUtil::trim($privateKeyPath);
  77. if(empty($mer_id)){
  78. die("[UMF SDK] 添加私钥 请传入商户号");
  79. }
  80. if(empty($private_key_path)){
  81. die("[UMF SDK] 添加私钥 请传入私钥文件绝对路径");
  82. }
  83. self::$merId[$mer_id] = $mer_id;
  84. self::$privateKeyPath[$mer_id] = $private_key_path;
  85. }
  86. //------------------------------------------------------------
  87. // Web收银台
  88. //------------------------------------------------------------
  89. /**
  90. * Web收银台—生成get后的请求参数,商户只需要拼接URL进行get请求即可
  91. */
  92. public function WebFrontPagePayMap($paramsArr=array()){
  93. $map = self::publicParams();
  94. // 业务参数处理
  95. foreach($paramsArr as $key => $value){
  96. $map->put($key,$value);
  97. }
  98. // 公共参数处理
  99. $map->put("service","req_front_page_pay");
  100. $reqDataPost = MerToPlat::makeRequestDataByGet($map);
  101. $get_url = $reqDataPost->getUrl();
  102. $log = new Logger();
  103. $log->logInfo("[UMF SDK] Web收银台 请求 service = req_front_page_pay 生成的getUrl = ".$get_url);
  104. return $get_url;
  105. }
  106. //------------------------------------------------------------
  107. // H5收银台
  108. //------------------------------------------------------------
  109. /**
  110. * H5收银台—生成get后的请求参数,商户只需要拼接URL进行get请求即可
  111. */
  112. public function H5FrontPageMap($paramsArr=array()){
  113. $map = self::publicParams();
  114. // 业务参数处理
  115. foreach($paramsArr as $key => $value){
  116. $map->put($key,$value);
  117. }
  118. // 公共参数处理
  119. $map->put("service","pay_req_h5_frontpage");
  120. $reqDataPost = MerToPlat::makeRequestDataByGet($map);
  121. $get_url = $reqDataPost->getUrl();
  122. $log = new Logger();
  123. $log->logInfo("[UMF SDK] H5收银台 请求 service = pay_req_h5_frontpage 生成的getUrl = ".$get_url);
  124. return $get_url;
  125. }
  126. public function H5FrontPageMaps($paramsArr=array()){
  127. $map = self::publicParams();
  128. // 业务参数处理
  129. foreach($paramsArr as $key => $value){
  130. $map->put($key,$value);
  131. }
  132. // 公共参数处理
  133. $map->put("service","wechatminiprogram_order");
  134. $reqDataPost = MerToPlat::makeRequestDataByGet($map);
  135. $get_url = $reqDataPost->getUrl();
  136. $log = new Logger();
  137. $log->logInfo("[UMF SDK] H5收银台 请求 service = pay_req_h5_frontpage 生成的getUrl = ".$get_url);
  138. return $get_url;
  139. }
  140. //------------------------------------------------------------
  141. // 公众号支付
  142. //------------------------------------------------------------
  143. /**
  144. * 公众号支付–生成get后的请求参数,商户只需要拼接URL进行get请求即可
  145. */
  146. public function PublicPaymentMap($paramsArr=array()){
  147. $map = self::publicParams();
  148. // 业务参数处理
  149. foreach($paramsArr as $key => $value){
  150. $map->put($key,$value);
  151. }
  152. // 公共参数处理
  153. $map->put("service","publicnumber_and_verticalcode");
  154. $reqDataPost = MerToPlat::makeRequestDataByGet($map);
  155. $get_url = $reqDataPost->getUrl();
  156. $log = new Logger();
  157. $log->logInfo("[UMF SDK] 公众号支付 请求 service = publicnumber_and_verticalcode 生成的getUrl = ".$get_url);
  158. return $get_url;
  159. }
  160. //------------------------------------------------------------
  161. // 收款 : 网银直连
  162. //------------------------------------------------------------
  163. /**
  164. * 网银直连SDK提供请求的最终URL生成,商户可以直接加载URL调起对应的支付方式
  165. */
  166. public function pBankDirectMap($paramsArr=array()){
  167. $map = self::publicParams();
  168. // 业务参数处理
  169. foreach($paramsArr as $key => $value){
  170. $map->put($key,$value);
  171. }
  172. // 公共参数处理
  173. $map->put("service","req_front_page_pay");
  174. $map->put("interface_type","02");
  175. $reqDataPost = MerToPlat::makeRequestDataByGet($map);
  176. $get_url = $reqDataPost->getUrl();
  177. $log = new Logger();
  178. $log->logInfo("[UMF SDK] 网银直连 请求 service = req_front_page_pay 生成的getUrl = ".$get_url);
  179. return $get_url;
  180. }
  181. //------------------------------------------------------------
  182. // 收款 : 借记卡直连
  183. //------------------------------------------------------------
  184. /**
  185. * 收款—借记卡直连
  186. */
  187. public function debitDirectMap($paramsArr=array()){
  188. $map = self::publicParams();
  189. // 业务参数处理
  190. foreach($paramsArr as $key => $value){
  191. $map->put($key,$value);
  192. }
  193. // 公共参数处理
  194. $map->put("service","debit_direct_pay");
  195. $map->put("pay_type","DEBITCARD");
  196. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  197. $post_url = $reqDataPost->getUrl();
  198. $mapfield = $reqDataPost->getField();
  199. // response
  200. $http = new UmfHttp();
  201. return $http->httpPost($post_url, $mapfield);
  202. }
  203. //------------------------------------------------------------
  204. // 收款 : 借记卡直连
  205. //------------------------------------------------------------
  206. /**
  207. * 收款—信用卡直连
  208. */
  209. public function creditDirectMap($paramsArr=array()){
  210. $map = self::publicParams();
  211. // 业务参数处理
  212. foreach($paramsArr as $key => $value){
  213. $map->put($key,$value);
  214. }
  215. // 公共参数处理
  216. $map->put("service","credit_direct_pay");
  217. $map->put("pay_type","CREDITCARD");
  218. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  219. $post_url = $reqDataPost->getUrl();
  220. $mapfield = $reqDataPost->getField();
  221. // response
  222. $http = new UmfHttp();
  223. return $http->httpPost($post_url, $mapfield);
  224. }
  225. //------------------------------------------------------------
  226. // 收款 : 扫码支付
  227. //------------------------------------------------------------
  228. /**
  229. * 主扫支付
  230. */
  231. public function activeScanPaymentMap($paramsArr=array()){
  232. $map = self::publicParams();
  233. // 业务参数处理
  234. foreach($paramsArr as $key => $value){
  235. $map->put($key,$value);
  236. }
  237. // 公共参数处理
  238. $map->put("service","active_scancode_order");
  239. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  240. $post_url = $reqDataPost->getUrl();
  241. $mapfield = $reqDataPost->getField();
  242. // response
  243. $http = new UmfHttp();
  244. $response = $http->httpPost($post_url,$mapfield);
  245. $res_activeScanPayment = array();
  246. $res_activeScanPayment['mer_id'] = $response['mer_id'];
  247. $res_activeScanPayment['token'] = $response['token'];
  248. $res_activeScanPayment['order_id'] = $response['order_id'];
  249. $res_activeScanPayment['mer_date'] = $response['mer_date'];
  250. $res_activeScanPayment['trade_state'] = $response['trade_state'];
  251. $res_activeScanPayment['trade_no'] = $response['trade_no'];
  252. $res_activeScanPayment['ret_code'] = $response['ret_code'];
  253. $res_activeScanPayment['ret_msg'] = $response['ret_msg'];
  254. $res_activeScanPayment['bank_payurl'] = $response['bank_payurl'];
  255. return $res_activeScanPayment;
  256. }
  257. public function activeNewScanPaymentMap($paramsArr=array()){
  258. $map = self::publicParams();
  259. // 业务参数处理
  260. foreach($paramsArr as $key => $value){
  261. $map->put($key,$value);
  262. }
  263. // 公共参数处理
  264. $map->put("service","active_scancode_order_new");
  265. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  266. $post_url = $reqDataPost->getUrl();
  267. $mapfield = $reqDataPost->getField();
  268. // response
  269. $http = new UmfHttp();
  270. $response = $http->httpPost($post_url,$mapfield);
  271. $res_activeNewScanPayment = array();
  272. $res_activeNewScanPayment['mer_id'] = $response['mer_id'];
  273. $res_activeNewScanPayment['token'] = $response['token'];
  274. $res_activeNewScanPayment['order_id'] = $response['order_id'];
  275. $res_activeNewScanPayment['mer_date'] = $response['mer_date'];
  276. $res_activeNewScanPayment['trade_state'] = $response['trade_state'];
  277. $res_activeNewScanPayment['trade_no'] = $response['trade_no'];
  278. $res_activeNewScanPayment['ret_code'] = $response['ret_code'];
  279. $res_activeNewScanPayment['ret_msg'] = $response['ret_msg'];
  280. $res_activeNewScanPayment['bank_payurl'] = $response['bank_payurl'];
  281. return $res_activeNewScanPayment;
  282. }
  283. /**
  284. * H5直连-范围URL地址
  285. */
  286. public function H5AutoConnectMap($paramsArr=array()){
  287. $map = self::publicParams();
  288. // 业务参数处理
  289. foreach ($paramsArr as $key => $value) {
  290. $map->put($key, $value);
  291. }
  292. // 公共参数处理
  293. $map->put("service", "active_scancode_order_new");
  294. $map->put("auto_pay", "TRUE");
  295. $reqDataGet = MerToPlat::makeRequestDataByGet($map);
  296. $get_url = $reqDataGet->getUrl();
  297. $log = new Logger();
  298. $log->logInfo("[UMF SDK] 公众号支付 请求 service = active_scancode_order_new 生成的getUrl = ".$get_url);
  299. return $get_url;
  300. }
  301. /**
  302. * H5直连-返回请求参数
  303. */
  304. public function H5ConnectMap($paramsArr=array()){
  305. $map = self::publicParams();
  306. // 业务参数处理
  307. foreach ($paramsArr as $key => $value) {
  308. $map->put($key, $value);
  309. }
  310. // 公共参数处理
  311. $map->put("service", "active_scancode_order_new");
  312. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  313. $post_url = $reqDataPost->getUrl();
  314. $mapfield = $reqDataPost->getField();
  315. // response
  316. $http = new UmfHttp();
  317. $response = $http->httpPost($post_url, $mapfield);
  318. return $response;
  319. }
  320. /**
  321. * 被扫支付
  322. */
  323. public function passiveScanPaymentMap($paramsArr=array()){
  324. $map = self::publicParams();
  325. // 业务参数处理
  326. foreach($paramsArr as $key => $value){
  327. $map->put($key,$value);
  328. }
  329. // 公共参数处理
  330. $map->put("service","passive_scancode_pay");
  331. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  332. $post_url = $reqDataPost->getUrl();
  333. $mapfield = $reqDataPost->getField();
  334. // response
  335. $http = new UmfHttp();
  336. $response = $http->httpPost($post_url,$mapfield);
  337. $res_passiveScanPayment = array();
  338. $res_passiveScanPayment['mer_id'] = $response['mer_id'];
  339. $res_passiveScanPayment['token'] = $response['token'];
  340. $res_passiveScanPayment['order_id'] = $response['order_id'];
  341. $res_passiveScanPayment['mer_date'] = $response['mer_date'];
  342. $res_passiveScanPayment['trade_state'] = $response['trade_state'];
  343. $res_passiveScanPayment['trade_no'] = $response['trade_no'];
  344. $res_passiveScanPayment['ret_code'] = $response['ret_code'];
  345. $res_passiveScanPayment['ret_msg'] = $response['ret_msg'];
  346. return $res_passiveScanPayment;
  347. }
  348. //------------------------------------------------------------
  349. // 收款 : 快捷支付
  350. //------------------------------------------------------------
  351. /**
  352. * 收款---快捷支付下单方法
  353. */
  354. public function quickPayOrderMap($paramsArr=array()){
  355. $map = self::publicParams();
  356. // 业务参数处理
  357. foreach($paramsArr as $key => $value){
  358. $map->put($key,$value);
  359. }
  360. // 公共参数处理
  361. $map->put("service","apply_pay_shortcut");
  362. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  363. $post_url = $reqDataPost->getUrl();
  364. $mapfield = $reqDataPost->getField();
  365. // response
  366. $http = new UmfHttp();
  367. $response = $http->httpPost($post_url,$mapfield);
  368. $res_quickPayOrder = array();
  369. $res_quickPayOrder['mer_id'] = $response['mer_id'];
  370. $res_quickPayOrder['order_id'] = $response['order_id'];
  371. $res_quickPayOrder['mer_date'] = $response['mer_date'];
  372. $res_quickPayOrder['ret_code'] = $response['ret_code'];
  373. $res_quickPayOrder['trade_state'] = $response['trade_state'];
  374. $res_quickPayOrder['trade_no'] = $response['trade_no'];
  375. $res_quickPayOrder['payElements'] = $response['payElements'];
  376. $res_quickPayOrder['ret_msg'] = $response['ret_msg'];
  377. return $res_quickPayOrder;
  378. }
  379. /**
  380. * 收款---快捷支付向平台获取短信验证码方法
  381. */
  382. public function quickGetMessageMap($paramsArr=array()){
  383. $map = self::publicParams();
  384. // 业务参数处理
  385. foreach($paramsArr as $key => $value){
  386. $map->put($key,$value);
  387. }
  388. // 公共参数处理
  389. $map->put("service","sms_req_shortcut");
  390. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  391. $post_url = $reqDataPost->getUrl();
  392. $mapfield = $reqDataPost->getField();
  393. // response
  394. $http = new UmfHttp();
  395. $response = $http->httpPost($post_url,$mapfield);
  396. $res_quickGetMessageMap = array();
  397. $res_quickGetMessageMap['mer_id'] = $response['mer_id'];
  398. $res_quickGetMessageMap['ret_code'] = $response['ret_code'];
  399. $res_quickGetMessageMap['ret_msg'] = $response['ret_msg'];
  400. return $res_quickGetMessageMap;
  401. }
  402. /**
  403. * 收款---快捷支付确认支付
  404. */
  405. public function quickPayConfirmMap($paramsArr=array()){
  406. $map = self::publicParams();
  407. // 业务参数处理
  408. foreach($paramsArr as $key => $value){
  409. $map->put($key,$value);
  410. }
  411. // 公共参数处理
  412. $map->put("service","confirm_pay_shortcut");
  413. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  414. $post_url = $reqDataPost->getUrl();
  415. $mapfield = $reqDataPost->getField();
  416. // response
  417. $http = new UmfHttp();
  418. $response = $http->httpPost($post_url,$mapfield);
  419. $res_quickPayConfirmMap = array();
  420. $res_quickPayConfirmMap['mer_id'] = $response['mer_id'];
  421. $res_quickPayConfirmMap['order_id'] = $response['order_id'];
  422. $res_quickPayConfirmMap['mer_date'] = $response['mer_date'];
  423. $res_quickPayConfirmMap['amount'] = $response['amount'];
  424. $res_quickPayConfirmMap['amt_type'] = $response['amt_type'];
  425. $res_quickPayConfirmMap['ret_code'] = $response['ret_code'];
  426. $res_quickPayConfirmMap['settle_date'] = $response['settle_date'];
  427. $res_quickPayConfirmMap['mer_priv'] = $response['mer_priv'];
  428. $res_quickPayConfirmMap['trade_state'] = $response['trade_state'];
  429. $res_quickPayConfirmMap['pay_date'] = $response['pay_date'];
  430. $res_quickPayConfirmMap['ret_msg'] = $response['ret_msg'];
  431. $res_quickPayConfirmMap['split_data_result'] = $response['split_data_result'];
  432. $res_quickPayConfirmMap['usr_busi_agreement_id'] = $response['usr_busi_agreement_id'];
  433. $res_quickPayConfirmMap['usr_pay_agreement_id'] = $response['usr_pay_agreement_id'];
  434. $res_quickPayConfirmMap['gate_id'] = $response['gate_id'];
  435. $res_quickPayConfirmMap['last_four_cardid'] = $response['last_four_cardid'];
  436. return $res_quickPayConfirmMap;
  437. }
  438. /**
  439. * 收款---快捷支付获取银行卡列表
  440. */
  441. public function quickQuerybankSupportMap($paramsArr=array()){
  442. $map = self::publicParams();
  443. // 业务参数处理
  444. foreach($paramsArr as $key => $value){
  445. $map->put($key,$value);
  446. }
  447. // 公共参数处理
  448. $map->put("service","query_mer_bank_shortcut");
  449. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  450. $post_url = $reqDataPost->getUrl();
  451. $mapfield = $reqDataPost->getField();
  452. // response
  453. $http = new UmfHttp();
  454. $response = $http->httpPost($post_url,$mapfield);
  455. $res_quickQuerybankSupportMap = array();
  456. $res_quickQuerybankSupportMap['mer_id'] = $response['mer_id'];
  457. $res_quickQuerybankSupportMap['ret_code'] = $response['ret_code'];
  458. $res_quickQuerybankSupportMap['ret_msg'] = $response['ret_msg'];
  459. $res_quickQuerybankSupportMap['mer_bank_list'] = $response['mer_bank_list'];
  460. return $res_quickQuerybankSupportMap;
  461. }
  462. /**
  463. * 收款---快捷支付解约
  464. */
  465. public function quickCancelSurrenderMap($paramsArr=array()){
  466. $map = self::publicParams();
  467. // 业务参数处理
  468. foreach($paramsArr as $key => $value){
  469. $map->put($key,$value);
  470. }
  471. // 公共参数处理
  472. $map->put("service","unbind_mercust_protocol_shortcut");
  473. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  474. $post_url = $reqDataPost->getUrl();
  475. $mapfield = $reqDataPost->getField();
  476. // response
  477. $http = new UmfHttp();
  478. $response = $http->httpPost($post_url,$mapfield);
  479. $res_quickCancelSurrenderMap = array();
  480. $res_quickCancelSurrenderMap['mer_id'] = $response['mer_id'];
  481. $res_quickCancelSurrenderMap['ret_code'] = $response['ret_code'];
  482. $res_quickCancelSurrenderMap['ret_msg'] = $response['ret_msg'];
  483. return $res_quickCancelSurrenderMap;
  484. }
  485. //------------------------------------------------------------
  486. // 订单查询
  487. //------------------------------------------------------------
  488. /**
  489. * 订单查询---查询历史订单方法
  490. */
  491. public function queryhistoryOrderMap($paramsArr=array()){
  492. $map = self::publicParams();
  493. // 业务参数处理
  494. foreach($paramsArr as $key => $value){
  495. $map->put($key,$value);
  496. }
  497. // 公共参数处理
  498. $map->put("service","mer_order_info_query");
  499. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  500. $post_url = $reqDataPost->getUrl();
  501. $mapfield = $reqDataPost->getField();
  502. // response
  503. $http = new UmfHttp();
  504. $response = $http->httpPost($post_url,$mapfield);
  505. $res_queryhistoryOrderMap = array();
  506. $res_queryhistoryOrderMap['mer_id'] = $response['mer_id'];
  507. $res_queryhistoryOrderMap['ret_code'] = $response['ret_code'];
  508. $res_queryhistoryOrderMap['ret_msg'] = $response['ret_msg'];
  509. $res_queryhistoryOrderMap['order_id'] = $response['order_id'];
  510. $res_queryhistoryOrderMap['mer_date'] = $response['mer_date'];
  511. $res_queryhistoryOrderMap['trade_no'] = $response['trade_no'];
  512. $res_queryhistoryOrderMap['pay_date'] = $response['pay_date'];
  513. $res_queryhistoryOrderMap['amount'] = $response['amount'];
  514. $res_queryhistoryOrderMap['amt_type'] = $response['amt_type'];
  515. $res_queryhistoryOrderMap['pay_type'] = $response['pay_type'];
  516. $res_queryhistoryOrderMap['media_id'] = $response['media_id'];
  517. $res_queryhistoryOrderMap['media_type'] = $response['media_type'];
  518. $res_queryhistoryOrderMap['gate_id'] = $response['gate_id'];
  519. $res_queryhistoryOrderMap['trade_state'] = $response['trade_state'];
  520. $res_queryhistoryOrderMap['settle_date'] = $response['settle_date'];
  521. $res_queryhistoryOrderMap['bank_check_state'] = $response['bank_check_state'];
  522. $res_queryhistoryOrderMap['mer_priv'] = $response['mer_priv'];
  523. $res_queryhistoryOrderMap['user_ip'] = $response['user_ip'];
  524. $res_queryhistoryOrderMap['expire_time'] = $response['expire_time'];
  525. $res_queryhistoryOrderMap['pay_seq'] = $response['pay_seq'];
  526. $res_queryhistoryOrderMap['error_code'] = $response['error_code'];
  527. $res_queryhistoryOrderMap['product_id'] = $response['product_id'];
  528. $res_queryhistoryOrderMap['refund_amt'] = $response['refund_amt'];
  529. $res_queryhistoryOrderMap['split_query_result'] = $response['split_query_result'];
  530. return $res_queryhistoryOrderMap;
  531. }
  532. /**
  533. * 订单查询---查询当天订单状态
  534. */
  535. public function querytodayOrderMap($paramsArr=array()){
  536. $map = self::publicParams();
  537. // 业务参数处理
  538. foreach($paramsArr as $key => $value){
  539. $map->put($key,$value);
  540. }
  541. // 公共参数处理
  542. $map->put("service","query_order");
  543. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  544. $post_url = $reqDataPost->getUrl();
  545. $mapfield = $reqDataPost->getField();
  546. // response
  547. $http = new UmfHttp();
  548. $response = $http->httpPost($post_url,$mapfield);
  549. $res_querytodayOrderMap = array();
  550. $res_querytodayOrderMap['mer_id'] = $response['mer_id'];
  551. $res_querytodayOrderMap['ret_code'] = $response['ret_code'];
  552. $res_querytodayOrderMap['ret_msg'] = $response['ret_msg'];
  553. $res_querytodayOrderMap['order_id'] = $response['order_id'];
  554. $res_querytodayOrderMap['mer_date'] = $response['mer_date'];
  555. $res_querytodayOrderMap['trade_no'] = $response['trade_no'];
  556. $res_querytodayOrderMap['pay_date'] = $response['pay_date'];
  557. $res_querytodayOrderMap['amount'] = $response['amount'];
  558. $res_querytodayOrderMap['amt_type'] = $response['amt_type'];
  559. $res_querytodayOrderMap['pay_type'] = $response['pay_type'];
  560. $res_querytodayOrderMap['media_id'] = $response['media_id'];
  561. $res_querytodayOrderMap['media_type'] = $response['media_type'];
  562. $res_querytodayOrderMap['gate_id'] = $response['gate_id'];
  563. $res_querytodayOrderMap['trade_state'] = $response['trade_state'];
  564. $res_querytodayOrderMap['settle_date'] = $response['settle_date'];
  565. $res_querytodayOrderMap['bank_check_state'] = $response['bank_check_state'];
  566. $res_querytodayOrderMap['mer_priv'] = $response['mer_priv'];
  567. $res_querytodayOrderMap['user_ip'] = $response['user_ip'];
  568. $res_querytodayOrderMap['expire_time'] = $response['expire_time'];
  569. $res_querytodayOrderMap['pay_seq'] = $response['pay_seq'];
  570. $res_querytodayOrderMap['error_code'] = $response['error_code'];
  571. $res_querytodayOrderMap['product_id'] = $response['product_id'];
  572. $res_querytodayOrderMap['refund_amt'] = $response['refund_amt'];
  573. $res_querytodayOrderMap['split_query_result'] = $response['split_query_result'];
  574. return $res_querytodayOrderMap;
  575. }
  576. //------------------------------------------------------------
  577. // 撤销
  578. //------------------------------------------------------------
  579. /**
  580. * 撤销---撤销方法
  581. */
  582. public function cancelTradeMap($paramsArr=array()){
  583. $map = self::publicParams();
  584. // 业务参数处理
  585. foreach($paramsArr as $key => $value){
  586. $map->put($key,$value);
  587. }
  588. // 公共参数处理
  589. $map->put("service","mer_cancel");
  590. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  591. $post_url = $reqDataPost->getUrl();
  592. $mapfield = $reqDataPost->getField();
  593. // response
  594. $http = new UmfHttp();
  595. $response = $http->httpPost($post_url,$mapfield);
  596. $res_cancelTradeMap = array();
  597. $res_cancelTradeMap['mer_id'] = $response['mer_id'];
  598. $res_cancelTradeMap['order_id'] = $response['order_id'];
  599. $res_cancelTradeMap['mer_date'] = $response['mer_date'];
  600. $res_cancelTradeMap['trade_no'] = $response['trade_no'];
  601. $res_cancelTradeMap['trade_state'] = $response['trade_state'];
  602. $res_cancelTradeMap['ret_code'] = $response['ret_code'];
  603. $res_cancelTradeMap['ret_msg'] = $response['ret_msg'];
  604. return $res_cancelTradeMap;
  605. }
  606. //------------------------------------------------------------
  607. // 退款
  608. //------------------------------------------------------------
  609. /**
  610. * 退款---普通退款方法
  611. */
  612. public function generalRefundMap($paramsArr=array()){
  613. $map = self::publicParams();
  614. // 业务参数处理
  615. foreach($paramsArr as $key => $value){
  616. $map->put($key,$value);
  617. }
  618. // 公共参数处理
  619. $map->put("service","mer_refund");
  620. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  621. $post_url = $reqDataPost->getUrl();
  622. $mapfield = $reqDataPost->getField();
  623. // response
  624. $http = new UmfHttp();
  625. $response = $http->httpPost($post_url,$mapfield);
  626. $res_generalRefundMap = array();
  627. $res_generalRefundMap['mer_id'] = $response['mer_id'];
  628. $res_generalRefundMap['refund_no'] = $response['refund_no'];
  629. $res_generalRefundMap['order_id'] = $response['order_id'];
  630. $res_generalRefundMap['mer_date'] = $response['mer_date'];
  631. $res_generalRefundMap['amount'] = $response['amount'];
  632. $res_generalRefundMap['refund_state'] = $response['refund_state'];
  633. $res_generalRefundMap['refund_amt'] = $response['refund_amt'];
  634. $res_generalRefundMap['ret_code'] = $response['ret_code'];
  635. $res_generalRefundMap['ret_msg'] = $response['ret_msg'];
  636. return $res_generalRefundMap;
  637. }
  638. /**
  639. * 退款---退款状态查询方法
  640. */
  641. public function queryRefundStateMap($paramsArr=array()){
  642. $map = self::publicParams();
  643. // 业务参数处理
  644. foreach($paramsArr as $key => $value){
  645. $map->put($key,$value);
  646. }
  647. // 公共参数处理
  648. $map->put("service","mer_refund_query");
  649. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  650. $post_url = $reqDataPost->getUrl();
  651. $mapfield = $reqDataPost->getField();
  652. // response
  653. $http = new UmfHttp();
  654. $response = $http->httpPost($post_url,$mapfield);
  655. $res_queryRefundStateMap = array();
  656. $res_queryRefundStateMap['mer_id'] = $response['mer_id'];
  657. $res_queryRefundStateMap['refund_state'] = $response['refund_state'];
  658. $res_queryRefundStateMap['refund_amt'] = $response['refund_amt'];
  659. $res_queryRefundStateMap['split_query_result'] = $response['split_query_result'];
  660. $res_queryRefundStateMap['ret_code'] = $response['ret_code'];
  661. $res_queryRefundStateMap['ret_msg'] = $response['ret_msg'];
  662. $res_queryRefundStateMap['currency'] = $response['currency'];
  663. return $res_queryRefundStateMap;
  664. }
  665. /**
  666. * 退款---退费信息补录方法
  667. */
  668. public function remedyRefundInformationMap($paramsArr=array()){
  669. $map = self::publicParams();
  670. // 业务参数处理
  671. foreach($paramsArr as $key => $value){
  672. $map->put($key,$value);
  673. }
  674. // 公共参数处理
  675. $map->put("service","refund_info_replenish");
  676. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  677. $post_url = $reqDataPost->getUrl();
  678. $mapfield = $reqDataPost->getField();
  679. // response
  680. $http = new UmfHttp();
  681. $response = $http->httpPost($post_url,$mapfield);
  682. $res_remedyRefundInformationMap = array();
  683. $res_remedyRefundInformationMap['mer_id'] = $response['mer_id'];
  684. $res_remedyRefundInformationMap['refund_no'] = $response['refund_no'];
  685. $res_remedyRefundInformationMap['order_id'] = $response['order_id'];
  686. $res_remedyRefundInformationMap['mer_date'] = $response['mer_date'];
  687. $res_remedyRefundInformationMap['ret_code'] = $response['ret_code'];
  688. $res_remedyRefundInformationMap['ret_msg'] = $response['ret_msg'];
  689. return $res_remedyRefundInformationMap;
  690. }
  691. //------------------------------------------------------------
  692. // 付款
  693. //------------------------------------------------------------
  694. /**
  695. * 付款---下单
  696. */
  697. public function paymentOrderMap($paramsArr=array()){
  698. $map = self::publicParams();
  699. // 业务参数处理
  700. foreach($paramsArr as $key => $value){
  701. $map->put($key,$value);
  702. }
  703. // 公共参数处理
  704. $map->put("service","transfer_direct_req");
  705. //$reqDataPost = MerToPlat::makeRequestDataByPost($map);
  706. //$post_url = $reqDataPost->getUrl();
  707. //$mapfield = $reqDataPost->getField();
  708. //$response = UmfHttp::httpPost($post_url,$mapfield);
  709. $reqDataGet = MerToPlat::makeRequestDataByGet($map);
  710. $get_url = $reqDataGet->getUrl();
  711. $http = new UmfHttp();
  712. $response = $http->httpGet($get_url);
  713. $res_paymentOrderMap = array();
  714. $res_paymentOrderMap['mer_id'] = $response['mer_id'];
  715. $res_paymentOrderMap['ret_code'] = $response['ret_code'];
  716. $res_paymentOrderMap['ret_msg'] = $response['ret_msg'];
  717. $res_paymentOrderMap['trade_no'] = $response['trade_no'];
  718. $res_paymentOrderMap['trade_state'] = $response['trade_state'];
  719. $res_paymentOrderMap['order_id'] = $response['order_id'];
  720. $res_paymentOrderMap['mer_date'] = $response['mer_date'];
  721. $res_paymentOrderMap['amount'] = $response['amount'];
  722. $res_paymentOrderMap['transfer_settle_date'] = $response['transfer_settle_date'];
  723. $res_paymentOrderMap['fee'] = $response['fee'];
  724. $res_paymentOrderMap['fee_type'] = $response['fee_type'];
  725. return $res_paymentOrderMap;
  726. }
  727. /**
  728. * 付款---付款状态查询
  729. */
  730. public function queryPaymentStatusMap($paramsArr=array()){
  731. $map = self::publicParams();
  732. // 业务参数处理
  733. foreach($paramsArr as $key => $value){
  734. $map->put($key,$value);
  735. }
  736. // 公共参数处理
  737. $map->put("service","transfer_query");
  738. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  739. $post_url = $reqDataPost->getUrl();
  740. $mapfield = $reqDataPost->getField();
  741. // response
  742. $http = new UmfHttp();
  743. $response = $http->httpPost($post_url,$mapfield);
  744. $res_queryPaymentStatusMap = array();
  745. $res_queryPaymentStatusMap['mer_id'] = $response['mer_id'];
  746. $res_queryPaymentStatusMap['ret_code'] = $response['ret_code'];
  747. $res_queryPaymentStatusMap['ret_msg'] = $response['ret_msg'];
  748. $res_queryPaymentStatusMap['trade_state'] = $response['trade_state'];
  749. $res_queryPaymentStatusMap['trade_no'] = $response['trade_no'];
  750. $res_queryPaymentStatusMap['transfer_date'] = $response['transfer_date'];
  751. $res_queryPaymentStatusMap['transfer_settle_date'] = $response['transfer_settle_date'];
  752. $res_queryPaymentStatusMap['amount'] = $response['amount'];
  753. $res_queryPaymentStatusMap['order_id'] = $response['order_id'];
  754. $res_queryPaymentStatusMap['mer_date'] = $response['mer_date'];
  755. $res_queryPaymentStatusMap['fee'] = $response['fee'];
  756. $res_queryPaymentStatusMap['purpose'] = $response['purpose'];
  757. return $res_queryPaymentStatusMap;
  758. }
  759. /**
  760. * 付款---余额查询
  761. */
  762. public function queryAccountBalanceMap($paramsArr=array()){
  763. $map = self::publicParams();
  764. // 业务参数处理
  765. foreach($paramsArr as $key => $value){
  766. $map->put($key,$value);
  767. }
  768. // 公共参数处理
  769. $map->put("service","query_account_balance");
  770. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  771. $post_url = $reqDataPost->getUrl();
  772. $mapfield = $reqDataPost->getField();
  773. // response
  774. $http = new UmfHttp();
  775. $response = $http->httpPost($post_url,$mapfield);
  776. $res_queryAccountBalanceMap = array();
  777. $res_queryAccountBalanceMap['mer_id'] = $response['mer_id'];
  778. $res_queryAccountBalanceMap['ret_code'] = $response['ret_code'];
  779. $res_queryAccountBalanceMap['ret_msg'] = $response['ret_msg'];
  780. $res_queryAccountBalanceMap['bal_sign'] = $response['bal_sign'];
  781. return $res_queryAccountBalanceMap;
  782. }
  783. //------------------------------------------------------------
  784. // 鉴权
  785. //------------------------------------------------------------
  786. /**
  787. * 鉴权---借记卡实名认证
  788. */
  789. public function debitCardAuthenticationMap($paramsArr=array()){
  790. $map = self::publicParams();
  791. // 业务参数处理
  792. foreach($paramsArr as $key => $value){
  793. $map->put($key,$value);
  794. }
  795. // 公共参数处理
  796. $map->put("service","comm_auth");
  797. $map->put("version","1.0");
  798. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  799. $post_url = $reqDataPost->getUrl();
  800. $mapfield = $reqDataPost->getField();
  801. // response
  802. $http = new UmfHttp();
  803. $response = $http->httpPost($post_url,$mapfield);
  804. $res_debitCardAuthenticationMap = array();
  805. $res_debitCardAuthenticationMap['mer_id'] = $response['mer_id'];
  806. $res_debitCardAuthenticationMap['ret_code'] = $response['ret_code'];
  807. $res_debitCardAuthenticationMap['ret_msg'] = $response['ret_msg'];
  808. $res_debitCardAuthenticationMap['isCharge'] = $response['isCharge'];
  809. return $res_debitCardAuthenticationMap;
  810. }
  811. /**
  812. * 鉴权---借记卡实名认证
  813. */
  814. public function creditCardAuthenticationMap($paramsArr=array()){
  815. $map = self::publicParams();
  816. // 业务参数处理
  817. foreach($paramsArr as $key => $value){
  818. $map->put($key,$value);
  819. }
  820. // 公共参数处理
  821. $map->put("service","comm_auth");
  822. $map->put("version","1.0");
  823. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  824. $post_url = $reqDataPost->getUrl();
  825. $mapfield = $reqDataPost->getField();
  826. // response
  827. $http = new UmfHttp();
  828. $response = $http->httpPost($post_url,$mapfield);
  829. $res_creditCardAuthenticationMap = array();
  830. $res_creditCardAuthenticationMap['mer_id'] = $response['mer_id'];
  831. $res_creditCardAuthenticationMap['ret_code'] = $response['ret_code'];
  832. $res_creditCardAuthenticationMap['ret_msg'] = $response['ret_msg'];
  833. $res_creditCardAuthenticationMap['isCharge'] = $response['isCharge'];
  834. return $res_creditCardAuthenticationMap;
  835. }
  836. /**
  837. * 鉴权---身份认证
  838. */
  839. public function identityAuthenticationMap($paramsArr=array()){
  840. $map = self::publicParams();
  841. // 业务参数处理
  842. foreach($paramsArr as $key => $value){
  843. $map->put($key,$value);
  844. }
  845. // 公共参数处理
  846. $map->put("service","comm_auth");
  847. $map->put("version","1.0");
  848. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  849. $post_url = $reqDataPost->getUrl();
  850. $mapfield = $reqDataPost->getField();
  851. // response
  852. $http = new UmfHttp();
  853. $response = $http->httpPost($post_url,$mapfield);
  854. $res_identityAuthenticationMap = array();
  855. $res_identityAuthenticationMap['mer_id'] = $response['mer_id'];
  856. $res_identityAuthenticationMap['ret_code'] = $response['ret_code'];
  857. $res_identityAuthenticationMap['ret_msg'] = $response['ret_msg'];
  858. $res_identityAuthenticationMap['isCharge'] = $response['isCharge'];
  859. return $res_identityAuthenticationMap;
  860. }
  861. //------------------------------------------------------------
  862. // 对账
  863. //------------------------------------------------------------
  864. /**
  865. * 对账
  866. */
  867. public function reconciliationDownloadMap($paramsArr=array()){
  868. $map = self::publicParams();
  869. // 业务参数处理
  870. foreach($paramsArr as $key => $value){
  871. $map->put($key,$value);
  872. }
  873. // 公共参数处理
  874. $map->put("service","download_settle_file");
  875. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  876. $post_url = $reqDataPost->getUrl();
  877. $mapfield = $reqDataPost->getField();
  878. // response
  879. $http = new UmfHttp();
  880. $output = $http->httpPost($post_url,$mapfield);
  881. $res = self::writeSettle($paramsArr["mer_id"],$paramsArr["settle_date"],$paramsArr["settle_path"],$output);
  882. if($res == true){
  883. // echo "对账文件写入本地成功";
  884. return true;
  885. } else {
  886. // echo "对账文件写入本地失败";
  887. return false;
  888. }
  889. }
  890. //------------------------------------------------------------
  891. // 异步通知
  892. //------------------------------------------------------------
  893. public function notifyDataParserMap($notifyParamsStr){
  894. if(!is_null($notifyParamsStr) && strlen($notifyParamsStr)>0){
  895. //联动发送异步通知URL地址后的参数
  896. $notifyParamsArr = explode('&',$notifyParamsStr);
  897. //var_dump($notifyParamsArr);
  898. $map = new HashMap();
  899. $notify_map = new HashMap();
  900. for($i=0;$i<count($notifyParamsArr);$i++){
  901. $str = $notifyParamsArr[$i];
  902. $arr = explode('=',$str,2);
  903. //$map->put($arr[0],urldecode($arr[1]));
  904. $map->put($arr[0],iconv( "utf-8","gbk", urldecode($arr[1])));
  905. }
  906. $sign = $map->get("sign");
  907. //遍历key放到一个新的map中,
  908. $keys = $map->keys();
  909. foreach ($keys as $key) {
  910. //sign_type 不需要参与RAS签名
  911. if ("sign_type" != $key && "sign" != $key ) {
  912. $notify_map->put($key, $map->get($key));
  913. }
  914. }
  915. /*
  916. $map->remove("sign");
  917. $map->remove("sign_type");*/
  918. //打印map
  919. //var_dump($notify_map);
  920. $plain = StringUtil::getPlainSortByAndWithoutSignType($notify_map);
  921. $verifyRet = SignUtil::verify($plain,$sign);
  922. if($verifyRet == true){
  923. // echo "[UMF SDK] 平台通知数据验签成功";
  924. //$map->remove("version");
  925. return $map->getInnerArr();
  926. }else{
  927. return false;
  928. // echo "[UMF SDK] 平台通知数据验证签名发生异常";
  929. }
  930. }
  931. }
  932. public function responseUMFMap($array, $private_file){
  933. $merMap = new HashMap();
  934. $merMap->put("mer_date", $array["mer_date"]);
  935. $merMap->put("mer_id", $array["mer_id"]);
  936. $merMap->put("order_id", $array["order_id"]);
  937. $merMap->put("ret_code", "0000");
  938. $merMap->put("ret_msg", "success");
  939. $merMap->put("version", "4.0");
  940. $merPlain = StringUtil::getPlainSortByAndWithoutSignType($merMap);
  941. $merSign = SignUtil::sign($merPlain, $private_file);
  942. return "mer_date=" . $merMap->get("mer_date") . "&mer_id=" . $merMap->get("mer_id") . "&order_id=" . $merMap->get("order_id") . "&ret_code=0000&ret_msg=success&sign_type=RSA&version=4.0&sign=" . $merSign;
  943. }
  944. //------------------------------------------------------------
  945. // APP支付
  946. //------------------------------------------------------------
  947. /**
  948. * APP下单
  949. * @param array $paramsArr
  950. * @return array
  951. */
  952. public function mobileOrderMap($paramsArr=array()){
  953. $map = self::publicParams();
  954. // 业务参数处理
  955. foreach($paramsArr as $key => $value){
  956. $map->put($key,$value);
  957. }
  958. // 公共参数处理
  959. $map->put("service","pay_req");
  960. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  961. $post_url = $reqDataPost->getUrl();
  962. $mapfield = $reqDataPost->getField();
  963. // response
  964. $http = new UmfHttp();
  965. $response = $http->httpPost($post_url,$mapfield);
  966. // dump('# $response: ', $response);
  967. $res_mobileOrderMap = array();
  968. $res_mobileOrderMap['mer_id'] = $response['mer_id'];
  969. $res_mobileOrderMap['token'] = $response['token'];
  970. $res_mobileOrderMap['order_id'] = $response['order_id'];
  971. $res_mobileOrderMap['mer_date'] = $response['mer_date'];
  972. $res_mobileOrderMap['trade_state'] = $response['trade_state'];
  973. $res_mobileOrderMap['trade_no'] = $response['trade_no'];
  974. $res_mobileOrderMap['ret_code'] = $response['ret_code'];
  975. $res_mobileOrderMap['ret_msg'] = $response['ret_msg'];
  976. return $res_mobileOrderMap;
  977. }
  978. public function appOrderMap($paramsArr = array())
  979. {
  980. $map = self::publicParams();
  981. // 业务参数处理
  982. foreach ($paramsArr as $key => $value) {
  983. $map->put($key, $value);
  984. }
  985. // 公共参数处理
  986. $map->put("service", "appprepay_order");
  987. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  988. $post_url = $reqDataPost->getUrl();
  989. $mapfield = $reqDataPost->getField();
  990. // response
  991. $http = new UmfHttp();
  992. $response = $http->httpPost($post_url, $mapfield);
  993. // dump('# $response: ', $response);
  994. return $response;
  995. // $res_mobileOrderMap = array();
  996. // $res_mobileOrderMap['mer_id'] = $response['mer_id'];
  997. // $res_mobileOrderMap['token'] = $response['token'];
  998. // $res_mobileOrderMap['order_id'] = $response['order_id'];
  999. // $res_mobileOrderMap['mer_date'] = $response['mer_date'];
  1000. // $res_mobileOrderMap['trade_state'] = $response['trade_state'];
  1001. // $res_mobileOrderMap['trade_no'] = $response['trade_no'];
  1002. // $res_mobileOrderMap['ret_code'] = $response['ret_code'];
  1003. // $res_mobileOrderMap['ret_msg'] = $response['ret_msg'];
  1004. // return $res_mobileOrderMap;
  1005. }
  1006. public function appPayOrderMap($paramsArr = array())
  1007. {
  1008. $map = self::publicParams();
  1009. // 业务参数处理
  1010. foreach ($paramsArr as $key => $value) {
  1011. $map->put($key, $value);
  1012. }
  1013. // 公共参数处理
  1014. $map->put("service", "app_pay_order");
  1015. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1016. $post_url = $reqDataPost->getUrl();
  1017. $mapfield = $reqDataPost->getField();
  1018. // response
  1019. $http = new UmfHttp();
  1020. $response = $http->httpPost($post_url, $mapfield);
  1021. // dump('# $response: ', $response);
  1022. $res_mobileOrderMap = array();
  1023. $res_mobileOrderMap['mer_id'] = $response['mer_id'];
  1024. $res_mobileOrderMap['token'] = $response['token'];
  1025. $res_mobileOrderMap['order_id'] = $response['order_id'];
  1026. $res_mobileOrderMap['mer_date'] = $response['mer_date'];
  1027. $res_mobileOrderMap['trade_state'] = $response['trade_state'];
  1028. $res_mobileOrderMap['trade_no'] = $response['trade_no'];
  1029. $res_mobileOrderMap['ret_code'] = $response['ret_code'];
  1030. $res_mobileOrderMap['ret_msg'] = $response['ret_msg'];
  1031. return $res_mobileOrderMap;
  1032. }
  1033. /**
  1034. * APP生成签名
  1035. * @param $params
  1036. * @return bool|string
  1037. */
  1038. public function mobileGenerateSignMap($params){
  1039. if(empty($params)){
  1040. die("[UMF SDK]待签名参数为空,请按要求传入参数");
  1041. }
  1042. if(empty($params["merId"]) || $params["merId"]==""){
  1043. die("[UMF SDK]签名参数商户号为空,请传入商户号");
  1044. }
  1045. if(empty($params["orderId"]) || $params["orderId"]==""){
  1046. die("[UMF SDK]签名参数订单号为空,请传入订单号");
  1047. }
  1048. if(empty($params["orderDate"]) || $params["orderDate"]==""){
  1049. die("[UMF SDK]签名参数订单日期为空,请传入订单日期");
  1050. }
  1051. if(empty($params["amount"]) || $params["amount"]==""){
  1052. die("[UMF SDK]签名参数订单金额为空,请传入订单金额");
  1053. }
  1054. if(!preg_match("/^[0-9]{1,8}$/", $params["merId"])){
  1055. die("[UMF SDK]签名参数商户号未通过正则校验");
  1056. }
  1057. if(!preg_match("/^\S{1,32}$/", $params["orderId"])){
  1058. die("[UMF SDK]签名参数订单号未通过正则校验");
  1059. }
  1060. if(!preg_match("/^[1-2][0-9]{7}$/", $params["orderDate"])){
  1061. die("[UMF SDK]签名参数订单日期未通过正则校验");
  1062. }
  1063. if(!preg_match("/^[1-9][0-9]*$/", $params["amount"])){
  1064. die("[UMF SDK]签名参数订单金额未通过正则校验");
  1065. }
  1066. $merId = $params["merId"];
  1067. $orderId = $params["orderId"];
  1068. $orderDate = $params["orderDate"];
  1069. $amount = $params["amount"];
  1070. $plain = $merId . $orderId . $amount . $orderDate;
  1071. $plain = iconv("UTF-8", "GBK", $plain);
  1072. $log = new Logger();
  1073. try{
  1074. $priv_key_file = self::$privateKeyPath[$params["merId"]];
  1075. var_dump("# privateKeyPath: ", self::$privateKeyPath);
  1076. $log->logInfo("[UMF SDK]私钥文件绝对路径 ".$priv_key_file);
  1077. if(!file_exists($priv_key_file)){
  1078. $log->logInfo("[UMF SDK]传入的私钥文件不存在,私钥文件绝对路径 ".$priv_key_file);
  1079. die("[UMF SDK]传入的私钥文件不存在,私钥文件绝对路径 ".$priv_key_file);
  1080. }
  1081. $fp = fopen($priv_key_file, "rb");
  1082. $priv_key = fread($fp, 8192);
  1083. @fclose($fp);
  1084. $pkeyid = openssl_get_privatekey($priv_key);
  1085. if(!is_resource($pkeyid)){ return FALSE;}
  1086. @openssl_sign($plain, $signature, $pkeyid);
  1087. @openssl_free_key($pkeyid);
  1088. $log->logInfo("[UMF SDK]签名后密文串 ".strtoupper(bin2hex($signature)));
  1089. return strtoupper(bin2hex($signature));
  1090. } catch(Exception $e) {
  1091. $log->logInfo("[UMF SDK]签名失败".$e->getMessage());
  1092. }
  1093. }
  1094. /**
  1095. * 传入请求参数,成sign字段
  1096. * @param array $paramsArr
  1097. * @return bool|string
  1098. */
  1099. public function generateSign($paramsArr=array()){
  1100. $map = new HashMap();
  1101. foreach($paramsArr as $key => $value){
  1102. $map->put($key,$value);
  1103. }
  1104. $plain = StringUtil::getPlainSortByAndWithoutSignType($map);
  1105. $sign = SignUtil::sign($plain,$paramsArr["mer_id"]);
  1106. return $sign;
  1107. }
  1108. /**
  1109. * 验签方法
  1110. * @param string $plain 联动返回明文字符串按序拼接(明文串去除sign_type字段)和
  1111. * @param string $sign 密文sign字段
  1112. * @return bool
  1113. */
  1114. public function verifySign($plain="",$sign=""){
  1115. if(empty($plain) || $plain==""){
  1116. die("明文参数为空,请传入明文字符串");
  1117. }
  1118. if(empty($sign) || $sign==""){
  1119. die("密文参数为空,请传入密文字符串");
  1120. }
  1121. $verifyRet = SignUtil::verify($plain,$sign);
  1122. return $verifyRet;
  1123. }
  1124. //------------------------------------------------------------
  1125. // private method
  1126. //------------------------------------------------------------
  1127. private function publicParams(){
  1128. $map = new HashMap();
  1129. $map->put("charset","UTF-8");
  1130. $map->put("sign_type","RSA");
  1131. $map->put("res_format","HTML");
  1132. $map->put("version","4.0");
  1133. $map->put("amt_type","RMB");
  1134. return $map;
  1135. }
  1136. /**
  1137. * @param $settle_path
  1138. * @param $content
  1139. * @return int
  1140. */
  1141. private function writeSettle($mer_id,$settle_date,$settle_path,$content){
  1142. $log = new Logger();
  1143. if(empty($mer_id)){
  1144. $log->logInfo("[UMF SDK]下载对账文件的商户号为空");
  1145. return false;
  1146. }
  1147. if(empty($settle_date)){
  1148. $log->logInfo("[UMF SDK]下载对账文件的对账日期为空");
  1149. return false;
  1150. }
  1151. if(empty($settle_path)){
  1152. $log->logInfo("[UMF SDK]下载对账文件的路径为空");
  1153. return false;
  1154. }
  1155. if(empty($content)){
  1156. $log->logInfo("[UMF SDK]对账文件的内容为空");
  1157. return false;
  1158. }
  1159. $lastChar = substr($settle_path,strlen($settle_path)-1,1);
  1160. if($lastChar == "/"){
  1161. $filepath = $settle_path . $mer_id . "_" . $settle_date . ".txt";
  1162. }else{
  1163. $filepath = $settle_path . "/" . $mer_id . "_" .$settle_date . ".txt";
  1164. }
  1165. $settle_content = iconv("GBK","UTF-8", $content);
  1166. $bool = file_put_contents($filepath,$settle_content,FILE_APPEND);
  1167. if($bool == true){
  1168. $log->logInfo("[UMF SDK]对账文件写入成功,路径 ".$filepath);
  1169. }else{
  1170. $log->logInfo("[UMF SDK]对账文件写入失败,路径 ".$filepath);
  1171. }
  1172. $log->logInfo("--------------------log end---------------------\n");
  1173. return $bool;
  1174. }
  1175. //----------------------------------------
  1176. // 子商户入网部分
  1177. //----------------------------------------
  1178. /**
  1179. * 子商户入网--获取token方法
  1180. */
  1181. public function getTokenMap($paramsArr=array()){
  1182. $log = new Logger();
  1183. $log->logInfo("--------------------log start---------------------");
  1184. $log->logInfo("[UMF SDK 子商户入网]本次请求原始参数 " .$log->logArrToStr($paramsArr));
  1185. $jsonStr = JsonUtil::arrayToJson($paramsArr);
  1186. $headers = array(
  1187. "Content-type: application/json;charset=utf-8",
  1188. );
  1189. $http = new UmfHttp();
  1190. $respObj = $http->httpRequestWithJson("https://pay.soopay.net/spay_restPay/oauth/authorize",true,$jsonStr,$headers);
  1191. $res_getToken = array();
  1192. $res_getToken["access_token"] = $respObj->access_token;
  1193. $res_getToken["expires_in"] = $respObj->expires_in;
  1194. return $res_getToken;
  1195. }
  1196. /**
  1197. * 子商户入网--添加子商户方法
  1198. */
  1199. public function addChildMerInfoMap($paramsArr=array()){
  1200. $log = new Logger();
  1201. $log->logInfo("--------------------log start---------------------");
  1202. $log->logInfo("[UMF SDK 子商户入网]本次请求原始参数 " .$log->logArrToStr($paramsArr));
  1203. $params = array(
  1204. "merId"=>$paramsArr["merId"],
  1205. "merName"=>RSACryptUtil::encrypt($paramsArr["merName"]),
  1206. "merType"=>$paramsArr["merType"],
  1207. "contActsName"=>RSACryptUtil::encrypt($paramsArr["contActsName"]),
  1208. "mobileNo"=>$paramsArr["mobileNo"],
  1209. "licenseType"=>$paramsArr["licenseType"],
  1210. "licenseNo"=>$paramsArr["licenseNo"],
  1211. "organizationId"=>$paramsArr["organizationId"],
  1212. "taxPayerNum"=>$paramsArr["taxPayerNum"],
  1213. "lawyer"=>RSACryptUtil::encrypt($paramsArr["lawyer"]),
  1214. "cardNo"=>RSACryptUtil::encrypt($paramsArr["cardNo"]),
  1215. "bankName"=>RSACryptUtil::encrypt($paramsArr["bankName"]),
  1216. "bankAccount"=>RSACryptUtil::encrypt($paramsArr["bankAccount"]),
  1217. "province"=>$paramsArr["province"],
  1218. "areaCode"=>$paramsArr["areaCode"],
  1219. "merNotifyUrl"=>$paramsArr["merNotifyUrl"],
  1220. "pubPriFlag"=>$paramsArr["pubPriFlag"],
  1221. "bankBrhName"=>RSACryptUtil::encrypt($paramsArr["bankBrhName"]),
  1222. );
  1223. $log->logInfo("[UMF SDK 子商户入网]本次请求处理后参数 " .$log->logArrToStr($params));
  1224. $jsonStr = JsonUtil::arrayToJson($params);
  1225. $signature = SignUtil::sign256($jsonStr,$paramsArr["merId"]);
  1226. $headers = array(
  1227. "Content-type: application/json;charset=utf-8",
  1228. "Signature: ".$signature,
  1229. "Authorization: Bearer".$paramsArr["token"]
  1230. );
  1231. $http = new UmfHttp();
  1232. $respObj = $http->httpRequestWithJson("https://pay.soopay.net/spay_restPay/addChildMerInfo",true,$jsonStr,$headers);
  1233. $res_addChildMerInfo = array();
  1234. $res_addChildMerInfo["merId"] = $respObj->merId;
  1235. $res_addChildMerInfo["licenseNo"] = $respObj->licenseNo;
  1236. $res_addChildMerInfo["ret_msg"] = $respObj->meta->ret_msg["0"];
  1237. $res_addChildMerInfo["ret_code"] = $respObj->meta->ret_code;
  1238. return $res_addChildMerInfo;
  1239. }
  1240. /**
  1241. * 子商户入网--上传商户资质方法
  1242. */
  1243. /**
  1244. * http://php.net/manual/zh/curlfile.construct.php
  1245. *
  1246. * Solution for PHP 5.4 or earlier:
  1247. * - Build up multipart content body by youself.
  1248. * - Change "Content-Type" header by yourself.
  1249. */
  1250. public function uploadMerFileMap($paramsArr=array(),$files=array()){
  1251. $log = new Logger();
  1252. $log->logInfo("--------------------log start---------------------");
  1253. $log->logInfo("[UMF SDK 子商户入网]本次请求原始参数 " .$log->logArrToStr($paramsArr));
  1254. $log->logInfo("[UMF SDK 子商户入网]本次请求上传文件 " .$log->logArrToStr($files));
  1255. $jsonStr = JsonUtil::arrayToJson($paramsArr);
  1256. $signature = SignUtil::sign256($jsonStr,$paramsArr["merId"]);
  1257. $url = "https://pay.soopay.net/spay_restPay/uploadChildFile"."?data=" . urlencode($jsonStr);
  1258. $body = array();
  1259. $boundary = "---------------------" . md5(date("Ymd"));
  1260. foreach ($files as $v) {
  1261. switch (true) {
  1262. case false === $v = realpath(filter_var($v)):
  1263. case !is_file($v):
  1264. case !is_readable($v):
  1265. continue 2;
  1266. }
  1267. $body[] = "\r\n--" . $boundary;
  1268. $data = file_get_contents($v);
  1269. $v = call_user_func("end", explode(DIRECTORY_SEPARATOR, $v));
  1270. $body[] = implode("\r\n", array(
  1271. "Content-Disposition: form-data; name=\"file\"; filename=\"{$v}\"",
  1272. "Content-Type: application/octet-stream",
  1273. "",
  1274. $data,
  1275. ));
  1276. }
  1277. $body[] = "\r\n--{$boundary}--\r\n";
  1278. $headers = array(
  1279. "Content-Type: multipart/form-data; boundary={$boundary}",
  1280. "Signature: ".$signature,
  1281. "Authorization: Bearer".$paramsArr["token"]
  1282. );
  1283. $http = new UmfHttp();
  1284. $respObj = $http->httpRequestWithJson($url,true,implode("\r\n", $body),$headers);
  1285. $res_uploadChildFile = array();
  1286. $res_uploadChildFile["merId"] = $respObj->merId;
  1287. $res_uploadChildFile["licenseNo"] = $respObj->licenseNo;
  1288. $res_uploadChildFile["ret_msg"] = $respObj->meta->ret_msg["0"];
  1289. $res_uploadChildFile["ret_code"] = $respObj->meta->ret_code;
  1290. return $res_uploadChildFile;
  1291. }
  1292. /**
  1293. * 子商户入网--修改子商户信息方法
  1294. */
  1295. public function changeChildMerInfoMap($paramsArr=array()){
  1296. $log = new Logger();
  1297. $log->logInfo("--------------------log start---------------------");
  1298. $log->logInfo("[UMF SDK 子商户入网]本次请求原始参数 " .$log->logArrToStr($paramsArr));
  1299. $params = array(
  1300. "merId"=>$paramsArr["merId"],
  1301. "merName"=>RSACryptUtil::encrypt($paramsArr["merName"]),
  1302. "merType"=>$paramsArr["merType"],
  1303. "contActsName"=>RSACryptUtil::encrypt($paramsArr["contActsName"]),
  1304. "mobileNo"=>$paramsArr["mobileNo"],
  1305. "licenseType"=>$paramsArr["licenseType"],
  1306. "licenseNo"=>$paramsArr["licenseNo"],
  1307. "organizationId"=>$paramsArr["organizationId"],
  1308. "taxPayerNum"=>$paramsArr["taxPayerNum"],
  1309. "lawyer"=>RSACryptUtil::encrypt($paramsArr["lawyer"]),
  1310. "cardNo"=>RSACryptUtil::encrypt($paramsArr["cardNo"]),
  1311. "bankName"=>RSACryptUtil::encrypt($paramsArr["bankName"]),
  1312. "bankAccount"=>RSACryptUtil::encrypt($paramsArr["bankAccount"]),
  1313. "province"=>$paramsArr["province"],
  1314. "areaCode"=>$paramsArr["areaCode"],
  1315. "merNotifyUrl"=>$paramsArr["merNotifyUrl"],
  1316. "pubPriFlag"=>$paramsArr["pubPriFlag"],
  1317. "bankBrhName"=>RSACryptUtil::encrypt($paramsArr["bankBrhName"]),
  1318. );
  1319. $log->logInfo("[UMF SDK 子商户入网]本次请求处理后参数 " .$log->logArrToStr($params));
  1320. $jsonStr = JsonUtil::arrayToJson($params);
  1321. $signature = SignUtil::sign256($jsonStr,$paramsArr["merId"]);
  1322. $headers = array(
  1323. "Content-type: application/json;charset=utf-8",
  1324. "Signature: ".$signature,
  1325. "Authorization: Bearer".$paramsArr["token"]
  1326. );
  1327. $http = new UmfHttp();
  1328. $respObj = $http->httpRequestWithJson("https://pay.soopay.net/spay_restPay/changeChildRebut",true,$jsonStr,$headers);
  1329. $res_changeChildRebut = array();
  1330. $res_changeChildRebut["merId"] = $respObj->merId;
  1331. $res_changeChildRebut["licenseNo"] = $respObj->licenseNo;
  1332. $res_changeChildRebut["ret_msg"] = $respObj->meta->ret_msg["0"];
  1333. $res_changeChildRebut["ret_code"] = $respObj->meta->ret_code;
  1334. return $res_changeChildRebut;
  1335. }
  1336. /**
  1337. * 子商户入网--查询审核状态方法
  1338. */
  1339. public function queryMerStateMap($paramsArr=array()){
  1340. $log = new Logger();
  1341. $log->logInfo("--------------------log start---------------------");
  1342. $log->logInfo("[UMF SDK 子商户入网]本次请求原始参数 " .$log->logArrToStr($paramsArr));
  1343. $merId = $paramsArr["merId"];
  1344. $licenseNo = $paramsArr["licenseNo"];
  1345. $url = "https://pay.soopay.net/spay_restPay/selectChildMerState" ."?merId=".$merId."&licenseNo=".$licenseNo;
  1346. $headers = array(
  1347. "Content-type: application/json;charset=utf-8",
  1348. "Authorization: Bearer".$paramsArr["token"]
  1349. );
  1350. $http = new UmfHttp();
  1351. $respObj = $http->httpRequestWithJson($url,false,"",$headers);
  1352. $res_selectChildMerState = array();
  1353. $res_selectChildMerState["licenseNo"] = $respObj->licenseNo;
  1354. $res_selectChildMerState["subMerId"] = $respObj->subMerId;
  1355. $res_selectChildMerState["ret_msg"] = $respObj->meta->ret_msg["0"];
  1356. $res_selectChildMerState["ret_code"] = $respObj->meta->ret_code;
  1357. $res_selectChildMerState["checkState"] = $respObj->checkState;
  1358. $res_selectChildMerState["rejectReason"] = $respObj->rejectReason;
  1359. $res_selectChildMerState["merId"] = $respObj->merId;
  1360. return $res_selectChildMerState;
  1361. }
  1362. /**
  1363. * 子商户入网异步通知---联动通知商户数据,SDK解析结果
  1364. */
  1365. public function notifyChildParserMap($notifyChildParamsStr){
  1366. if(!is_null($notifyChildParamsStr) && strlen($notifyChildParamsStr)>0){
  1367. $notifyParamsArr = explode('&',$notifyChildParamsStr);
  1368. $map = new HashMap();
  1369. for($i=0;$i<count($notifyParamsArr);$i++){
  1370. $str = $notifyParamsArr[$i];
  1371. $arr = explode('=',$str,2);
  1372. //$map->put($arr[0],urldecode($arr[1]));
  1373. $map->put($arr[0],iconv( "utf-8","gbk", urldecode($arr[1])));
  1374. }
  1375. $sign = $map->get("sign");
  1376. $map->remove("sign");
  1377. $plain = StringUtil::getPlainSortByAndWithoutSignType($map);
  1378. $verifyRet = SignUtil::verify($plain,$sign);
  1379. if($verifyRet == true){
  1380. // echo "[UMF SDK 子商户入网] 平台通知数据验签成功";
  1381. return $map->getInnerArr();
  1382. }
  1383. }
  1384. }
  1385. /**
  1386. * 账户通---子商户提现
  1387. */
  1388. public function withdrawalsMap($array){
  1389. $map = self::publicParams();
  1390. // 业务参数处理
  1391. foreach($array as $key => $value){
  1392. $map->put($key,$value);
  1393. }
  1394. // 公共参数处理
  1395. $map->put("service","edraw_trans_by_main");
  1396. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1397. $post_url = $reqDataPost->getUrl();
  1398. $mapfield = $reqDataPost->getField();
  1399. // response
  1400. $http = new UmfHttp();
  1401. $response = $http->httpPost($post_url,$mapfield);
  1402. $res_withdrawals = array();
  1403. $res_withdrawals['mer_id'] = $response['mer_id'];
  1404. $res_withdrawals['sub_mer_id'] = $response['sub_mer_id'];
  1405. $res_withdrawals['order_id'] = $response['order_id'];
  1406. $res_withdrawals['mer_date'] = $response['mer_date'];
  1407. $res_withdrawals['trade_state'] = $response['trade_state'];
  1408. $res_withdrawals['trade_no'] = $response['trade_no'];
  1409. $res_withdrawals['ret_code'] = $response['ret_code'];
  1410. $res_withdrawals['ret_msg'] = $response['ret_msg'];
  1411. $res_withdrawals['amount'] = $response['amount'];
  1412. $res_withdrawals['fee'] = $response['fee'];
  1413. $res_withdrawals['com_amt_type'] = $response['com_amt_type'];
  1414. $res_withdrawals['purpose'] = $response['purpose'];
  1415. $res_withdrawals['transfer_settle_date'] = $response['transfer_settle_date'];
  1416. return $res_withdrawals;
  1417. }
  1418. /**
  1419. * 账户通---子商户提现查询
  1420. */
  1421. public function queryWithdrawalsMap($array){
  1422. $map = self::publicParams();
  1423. // 业务参数处理
  1424. foreach($array as $key => $value){
  1425. $map->put($key,$value);
  1426. }
  1427. // 公共参数处理
  1428. $map->put("service","query_edraw_trans_by_main");
  1429. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1430. $post_url = $reqDataPost->getUrl();
  1431. $mapfield = $reqDataPost->getField();
  1432. // response
  1433. $http = new UmfHttp();
  1434. $response = $http->httpPost($post_url,$mapfield);
  1435. $res_withdrawals = array();
  1436. $res_withdrawals['mer_id'] = $response['mer_id'];
  1437. //$res_withdrawals['sub_mer_id'] = $response['sub_mer_id'];
  1438. $res_withdrawals['order_id'] = $response['order_id'];
  1439. $res_withdrawals['mer_date'] = $response['mer_date'];
  1440. $res_withdrawals['trade_state'] = $response['trade_state'];
  1441. $res_withdrawals['trade_no'] = $response['trade_no'];
  1442. $res_withdrawals['ret_code'] = $response['ret_code'];
  1443. $res_withdrawals['ret_msg'] = $response['ret_msg'];
  1444. $res_withdrawals['amount'] = $response['amount'];
  1445. $res_withdrawals['fee'] = $response['fee'];
  1446. $res_withdrawals['com_amt_type'] = $response['com_amt_type'];
  1447. $res_withdrawals['purpose'] = $response['purpose'];
  1448. $res_withdrawals['order_state'] = $response['order_state'];
  1449. return $res_withdrawals;
  1450. }
  1451. /**
  1452. * 账户通---子商户余额查询
  1453. */
  1454. public function querySubBalanceMap($array){
  1455. $map = self::publicParams();
  1456. // 业务参数处理
  1457. foreach($array as $key => $value){
  1458. $map->put($key,$value);
  1459. }
  1460. // 公共参数处理
  1461. $map->put("service","query_account_balance_by_main");
  1462. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1463. $post_url = $reqDataPost->getUrl();
  1464. $mapfield = $reqDataPost->getField();
  1465. // response
  1466. $http = new UmfHttp();
  1467. $response = $http->httpPost($post_url,$mapfield);
  1468. $res_withdrawals = array();
  1469. $res_withdrawals['ret_code'] = $response['ret_code'];
  1470. $res_withdrawals['ret_msg'] = $response['ret_msg'];
  1471. $res_withdrawals['acc_msg'] = $response['acc_msg'];
  1472. return $res_withdrawals;
  1473. }
  1474. /**
  1475. * 子商户入网异步通知---商户响应联动通知SDK生成字符串
  1476. * 该字符串拼装在HTML响应中的head中的meta标签CONTENT中
  1477. */
  1478. public function responseChildNotifyMap($array){
  1479. $merMap = new HashMap();
  1480. $merMap->put("merId",$array["merId"]);
  1481. $merMap->put("licenseNo",$array["licenseNo"]);
  1482. $merMap->put("ret_code","0000");
  1483. $merPlain = StringUtil::getPlainSortByAndWithoutSignType($merMap);
  1484. $merSign = SignUtil::sign($merPlain,$array["merId"]);
  1485. $mer2UmfPlatStr = $merPlain . "&sign=" . $merSign;
  1486. return $mer2UmfPlatStr;
  1487. }
  1488. //----------------------------------------
  1489. // 分账部分
  1490. //----------------------------------------
  1491. /**
  1492. * 分账—分账请求针对标准分账的延时分账
  1493. */
  1494. public function splitReqMap($paramsArr=array()){
  1495. $map = self::publicParams();
  1496. // 业务参数处理
  1497. foreach($paramsArr as $key => $value){
  1498. $map->put($key,$value);
  1499. }
  1500. // 公共参数处理
  1501. $map->put("service","split_req");
  1502. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1503. $post_url = $reqDataPost->getUrl();
  1504. $mapfield = $reqDataPost->getField();
  1505. // response
  1506. $http = new UmfHttp();
  1507. $response = $http->httpPost($post_url,$mapfield);
  1508. $res_splitStateMap = array();
  1509. $res_splitStateMap['mer_id'] = $response['mer_id'];
  1510. $res_splitStateMap['ret_code'] = $response['ret_code'];
  1511. $res_splitStateMap['ret_msg'] = $response['ret_msg'];
  1512. $res_splitStateMap['split_result'] = $response['split_result'];
  1513. return $res_splitStateMap;
  1514. }
  1515. /**
  1516. * 分账---分账状态查询
  1517. */
  1518. public function splitStateMap($paramsArr=array()){
  1519. $map = self::publicParams();
  1520. // 业务参数处理
  1521. foreach($paramsArr as $key => $value){
  1522. $map->put($key,$value);
  1523. }
  1524. // 公共参数处理
  1525. $map->put("service","query_split_order");
  1526. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1527. $post_url = $reqDataPost->getUrl();
  1528. $mapfield = $reqDataPost->getField();
  1529. // response
  1530. $http = new UmfHttp();
  1531. $response = $http->httpPost($post_url,$mapfield);
  1532. $res_splitStateMap = array();
  1533. $res_splitStateMap['mer_id'] = $response['mer_id'];
  1534. $res_splitStateMap['ret_code'] = $response['ret_code'];
  1535. $res_splitStateMap['ret_msg'] = $response['ret_msg'];
  1536. $res_splitStateMap['split_query_result'] = $response['split_query_result'];
  1537. return $res_splitStateMap;
  1538. }
  1539. /**
  1540. * 分账---分账退费
  1541. */
  1542. public function splitRefundMap($paramsArr=array()){
  1543. $map = self::publicParams();
  1544. // 业务参数处理
  1545. foreach($paramsArr as $key => $value){
  1546. $map->put($key,$value);
  1547. }
  1548. // 公共参数处理
  1549. $map->put("service","mer_refund");
  1550. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1551. $post_url = $reqDataPost->getUrl();
  1552. $mapfield = $reqDataPost->getField();
  1553. // response
  1554. $http = new UmfHttp();
  1555. $response = $http->httpPost($post_url,$mapfield);
  1556. $res_splitRefundMap = array();
  1557. $res_splitRefundMap['mer_id'] = $response['mer_id'];
  1558. $res_splitRefundMap['refund_no'] = $response['refund_no'];
  1559. $res_splitRefundMap['order_id'] = $response['order_id'];
  1560. $res_splitRefundMap['mer_date'] = $response['mer_date'];
  1561. $res_splitRefundMap['amount'] = $response['amount'];
  1562. $res_splitRefundMap['refund_amt'] = $response['refund_amt'];
  1563. $res_splitRefundMap['ret_code'] = $response['ret_code'];
  1564. $res_splitRefundMap['ret_msg'] = $response['ret_msg'];
  1565. $res_splitRefundMap['split_refund_result'] = $response['split_refund_result'];
  1566. return $res_splitRefundMap;
  1567. }
  1568. /**
  1569. * 分账---分账子订单退费请求
  1570. */
  1571. public function splitSubRefundMap($paramsArr=array()){
  1572. $map = self::publicParams();
  1573. // 业务参数处理
  1574. foreach($paramsArr as $key => $value){
  1575. $map->put($key,$value);
  1576. }
  1577. // 公共参数处理
  1578. $map->put("service","split_refund_req");
  1579. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1580. $post_url = $reqDataPost->getUrl();
  1581. $mapfield = $reqDataPost->getField();
  1582. // response
  1583. $http = new UmfHttp();
  1584. $response = $http->httpPost($post_url,$mapfield);
  1585. $res_massTransferRefundMap = array();
  1586. $res_massTransferRefundMap['mer_id'] = $response['mer_id'];
  1587. $res_massTransferRefundMap['refund_no'] = $response['refund_no'];
  1588. $res_massTransferRefundMap['order_id'] = $response['order_id'];
  1589. $res_massTransferRefundMap['mer_date'] = $response['mer_date'];
  1590. $res_massTransferRefundMap['ret_code'] = $response['ret_code'];
  1591. $res_massTransferRefundMap['ret_msg'] = $response['ret_msg'];
  1592. return $res_massTransferRefundMap;
  1593. }
  1594. /**
  1595. * 分账---分账文件下载
  1596. */
  1597. public function splitFileDownloadMap($paramsArr=array()){
  1598. $map = self::publicParams();
  1599. // 业务参数处理
  1600. foreach($paramsArr as $key => $value){
  1601. $map->put($key,$value);
  1602. }
  1603. // 公共参数处理
  1604. $map->put("service","download_settle_file");
  1605. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1606. $post_url = $reqDataPost->getUrl();
  1607. $mapfield = $reqDataPost->getField();
  1608. // response
  1609. $http = new UmfHttp();
  1610. $output = $http->httpPost($post_url,$mapfield);
  1611. $res = self::writeSettle($paramsArr["mer_id"],$paramsArr["settle_date"],$paramsArr["settle_path"],$output);
  1612. if($res == true){
  1613. // echo "对账文件写入本地成功";
  1614. return true;
  1615. } else {
  1616. // echo "对账文件写入本地失败";
  1617. return false;
  1618. }
  1619. }
  1620. //----------------------------------------
  1621. // E秒付
  1622. //----------------------------------------
  1623. /**
  1624. * E秒付
  1625. */
  1626. public function epaymentOrderMap($paramsArr=array()){
  1627. $map = self::publicParams();
  1628. // 业务参数处理
  1629. foreach($paramsArr as $key => $value){
  1630. $map->put($key,$value);
  1631. }
  1632. // 公共参数处理
  1633. $map->put("service","epay_direct_req");
  1634. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1635. $post_url = $reqDataPost->getUrl();
  1636. $mapfield = $reqDataPost->getField();
  1637. // response
  1638. $http = new UmfHttp();
  1639. $response = $http->httpPost($post_url,$mapfield);
  1640. $res_epaymentOrderMap = array();
  1641. $res_epaymentOrderMap['mer_id'] = $response['mer_id'];
  1642. $res_epaymentOrderMap['ret_code'] = $response['ret_code'];
  1643. $res_epaymentOrderMap['ret_msg'] = $response['ret_msg'];
  1644. $res_epaymentOrderMap['trade_no'] = $response['trade_no'];
  1645. $res_epaymentOrderMap['trade_state'] = $response['trade_state'];
  1646. $res_epaymentOrderMap['order_id'] = $response['order_id'];
  1647. $res_epaymentOrderMap['mer_date'] = $response['mer_date'];
  1648. $res_epaymentOrderMap['amount'] = $response['amount'];
  1649. $res_epaymentOrderMap['transfer_settle_date'] = $response['transfer_settle_date'];
  1650. $res_epaymentOrderMap['fee'] = $response['fee'];
  1651. $res_epaymentOrderMap['cut_fee_type'] = $response['cut_fee_type'];
  1652. return $res_epaymentOrderMap;
  1653. }
  1654. /**
  1655. * 立码付API
  1656. */
  1657. public function publicVerticalMap($paramsArr=array()){
  1658. $map = self::publicParams();
  1659. // 业务参数处理
  1660. foreach ($paramsArr as $key => $value) {
  1661. $map->put($key, $value);
  1662. }
  1663. // 公共参数处理
  1664. $map->put("service", "verticalcode_order");
  1665. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1666. $post_url = $reqDataPost->getUrl();
  1667. $mapfield = $reqDataPost->getField();
  1668. // response
  1669. $http = new UmfHttp();
  1670. return $http->httpPost($post_url, $mapfield);
  1671. }
  1672. /**
  1673. * 小程序
  1674. */
  1675. public function miniProgramPayMap($paramsArr=array()){
  1676. $map = self::publicParams();
  1677. // 业务参数处理
  1678. foreach ($paramsArr as $key => $value) {
  1679. $map->put($key, $value);
  1680. }
  1681. // 公共参数处理
  1682. $map->put("service", "wechatminiprogram_order");
  1683. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1684. $post_url = $reqDataPost->getUrl();
  1685. $mapfield = $reqDataPost->getField();
  1686. // response
  1687. $http = new UmfHttp();
  1688. return $http->httpPost($post_url, $mapfield);
  1689. }
  1690. /**
  1691. * 微信主扫线上
  1692. */
  1693. public function activeOnlineScanPayMap($paramsArr=array()){
  1694. $map = self::publicParams();
  1695. // 业务参数处理
  1696. foreach ($paramsArr as $key => $value) {
  1697. $map->put($key, $value);
  1698. }
  1699. // 公共参数处理
  1700. $map->put("service", "active_scancode_order_on");
  1701. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1702. $post_url = $reqDataPost->getUrl();
  1703. $mapfield = $reqDataPost->getField();
  1704. // response
  1705. $http = new UmfHttp();
  1706. return $http->httpPost($post_url, $mapfield);
  1707. }
  1708. /**
  1709. * 公众号线上
  1710. */
  1711. public function publicOnlinePayMap($paramsArr=array()){
  1712. $map = self::publicParams();
  1713. // 业务参数处理
  1714. foreach ($paramsArr as $key => $value) {
  1715. $map->put($key, $value);
  1716. }
  1717. // 公共参数处理
  1718. $map->put("service", "public_payment_order_on");
  1719. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1720. $post_url = $reqDataPost->getUrl();
  1721. $mapfield = $reqDataPost->getField();
  1722. // response
  1723. $http = new UmfHttp();
  1724. return $http->httpPost($post_url, $mapfield);
  1725. }
  1726. /**
  1727. * 公众号线下
  1728. */
  1729. public function publicUnderlinePayMap($paramsArr=array()){
  1730. $map = self::publicParams();
  1731. // 业务参数处理
  1732. foreach ($paramsArr as $key => $value) {
  1733. $map->put($key, $value);
  1734. }
  1735. // 公共参数处理
  1736. $map->put("service", "public_payment_order_off");
  1737. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1738. $post_url = $reqDataPost->getUrl();
  1739. $mapfield = $reqDataPost->getField();
  1740. // response
  1741. $http = new UmfHttp();
  1742. return $http->httpPost($post_url, $mapfield);
  1743. }
  1744. /**
  1745. * 收款---一键快捷支付下单方法
  1746. */
  1747. public function quickOrderMap($paramsArr=array()) {
  1748. $map = self::publicParams();
  1749. // 业务参数处理
  1750. foreach ($paramsArr as $key => $value) {
  1751. $map->put($key, $value);
  1752. }
  1753. // 公共参数处理
  1754. $map->put("service", "pay_req_shortcut");
  1755. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1756. $post_url = $reqDataPost->getUrl();
  1757. $mapfield = $reqDataPost->getField();
  1758. // response
  1759. $http = new UmfHttp();
  1760. return $http->httpPost($post_url, $mapfield);
  1761. }
  1762. /**
  1763. * 收款---一键快捷支付获取短信方法
  1764. */
  1765. public function getSMSMap($paramsArr=array()) {
  1766. $map = self::publicParams();
  1767. // 业务参数处理
  1768. foreach ($paramsArr as $key => $value) {
  1769. $map->put($key, $value);
  1770. }
  1771. // 公共参数处理
  1772. $map->put("service", "req_smsverify_shortcut");
  1773. //$map->put("media_type","MOBILE");
  1774. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1775. $post_url = $reqDataPost->getUrl();
  1776. $mapfield = $reqDataPost->getField();
  1777. // response
  1778. $http = new UmfHttp();
  1779. return $http->httpPost($post_url, $mapfield);
  1780. }
  1781. /**
  1782. * 收款---一键快捷支付首次支付方法
  1783. */
  1784. public function FirstPaymentMap($paramsArr=array()) {
  1785. $map = self::publicParams();
  1786. // 业务参数处理
  1787. foreach ($paramsArr as $key => $value) {
  1788. $map->put($key, $value);
  1789. }
  1790. // 公共参数处理
  1791. $map->put("service", "first_pay_confirm_shortcut");
  1792. $map->put("identity_type","IDENTITY_CARD");
  1793. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1794. $post_url = $reqDataPost->getUrl();
  1795. $mapfield = $reqDataPost->getField();
  1796. // response
  1797. $http = new UmfHttp();
  1798. return $http->httpPost($post_url, $mapfield);
  1799. }
  1800. /**
  1801. * 收款---一键快捷支付协议支付方法
  1802. */
  1803. public function agreementPaymentMap($paramsArr=array()) {
  1804. $map = self::publicParams();
  1805. // 业务参数处理
  1806. foreach ($paramsArr as $key => $value) {
  1807. $map->put($key, $value);
  1808. }
  1809. // 公共参数处理
  1810. $map->put("service", "agreement_pay_confirm_shortcut");
  1811. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1812. $post_url = $reqDataPost->getUrl();
  1813. $mapfield = $reqDataPost->getField();
  1814. // response
  1815. $http = new UmfHttp();
  1816. return $http->httpPost($post_url, $mapfield);
  1817. }
  1818. /**
  1819. * 收款---一键快捷支付查询商户支持的银行卡列表方法
  1820. */
  1821. public function supportBankMap($paramsArr=array()) {
  1822. $map = self::publicParams();
  1823. // 业务参数处理
  1824. foreach ($paramsArr as $key => $value) {
  1825. $map->put($key, $value);
  1826. }
  1827. // 公共参数处理
  1828. $map->put("service", "query_mer_bank_shortcut");
  1829. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1830. $post_url = $reqDataPost->getUrl();
  1831. $mapfield = $reqDataPost->getField();
  1832. // response
  1833. $http = new UmfHttp();
  1834. return $http->httpPost($post_url, $mapfield);
  1835. }
  1836. /**
  1837. * 收款---一键快捷支付查询商户用户已签约的银行列表方法
  1838. */
  1839. public function signedBankMap($paramsArr=array()) {
  1840. $map = self::publicParams();
  1841. // 业务参数处理
  1842. foreach ($paramsArr as $key => $value) {
  1843. $map->put($key, $value);
  1844. }
  1845. // 公共参数处理
  1846. $map->put("service", "query_mercust_bank_shortcut");
  1847. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1848. $post_url = $reqDataPost->getUrl();
  1849. $mapfield = $reqDataPost->getField();
  1850. // response
  1851. $http = new UmfHttp();
  1852. return $http->httpPost($post_url, $mapfield);
  1853. }
  1854. /**
  1855. * 收款---一键快捷支付用户签约下短信方法
  1856. */
  1857. public function bindingApplicationMap($paramsArr=array()) {
  1858. $map = self::publicParams();
  1859. // 业务参数处理
  1860. foreach ($paramsArr as $key => $value) {
  1861. $map->put($key, $value);
  1862. }
  1863. // 公共参数处理
  1864. $map->put("service", "req_bind_verify_shortcut");
  1865. $map->put("media_type", "MOBILE");
  1866. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1867. $post_url = $reqDataPost->getUrl();
  1868. $mapfield = $reqDataPost->getField();
  1869. // response
  1870. $http = new UmfHttp();
  1871. return $http->httpPost($post_url, $mapfield);
  1872. }
  1873. /**
  1874. * 收款---一键快捷支付签约确认方法
  1875. */
  1876. public function bindingConfirmationMap($paramsArr=array()) {
  1877. $map = self::publicParams();
  1878. // 业务参数处理
  1879. foreach ($paramsArr as $key => $value) {
  1880. $map->put($key, $value);
  1881. }
  1882. // 公共参数处理
  1883. $map->put("service", "req_bind_confirm_shortcut");
  1884. $map->put("media_type", "MOBILE");
  1885. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1886. $post_url = $reqDataPost->getUrl();
  1887. $mapfield = $reqDataPost->getField();
  1888. // response
  1889. $http = new UmfHttp();
  1890. return $http->httpPost($post_url, $mapfield);
  1891. }
  1892. /**
  1893. * 收款---一键快捷支付API解除绑定方法
  1894. */
  1895. public function unbindMap($paramsArr=array()) {
  1896. $map = self::publicParams();
  1897. // 业务参数处理
  1898. foreach ($paramsArr as $key => $value) {
  1899. $map->put($key, $value);
  1900. }
  1901. // 公共参数处理
  1902. $map->put("service", "unbind_mercust_protocol_shortcut");
  1903. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1904. $post_url = $reqDataPost->getUrl();
  1905. $mapfield = $reqDataPost->getField();
  1906. // response
  1907. $http = new UmfHttp();
  1908. return $http->httpPost($post_url, $mapfield);
  1909. }
  1910. /**
  1911. * 商业委托---签约下单及获取短信验证码
  1912. */
  1913. public function CommercialSignOrderMap($paramsArr=array()) {
  1914. $map = self::publicParams();
  1915. // 业务参数处理
  1916. foreach ($paramsArr as $key => $value) {
  1917. $map->put($key, $value);
  1918. }
  1919. // 公共参数处理
  1920. $map->put("service", "apply_sms_bind_shortcut");
  1921. $map->put("media_type","MOBILE");
  1922. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1923. $post_url = $reqDataPost->getUrl();
  1924. $mapfield = $reqDataPost->getField();
  1925. // response
  1926. $http = new UmfHttp();
  1927. return $http->httpPost($post_url, $mapfield);
  1928. }
  1929. /**
  1930. * 商业委托---查询商户用户已签约的银行列表方法
  1931. */
  1932. public function querySignedBankMapNew($paramsArr=array()) {
  1933. $map = self::publicParams();
  1934. // 业务参数处理
  1935. foreach ($paramsArr as $key => $value) {
  1936. $map->put($key, $value);
  1937. }
  1938. // 公共参数处理
  1939. $map->put("service", "query_mercust_bank_shortcut_new");
  1940. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1941. $post_url = $reqDataPost->getUrl();
  1942. $mapfield = $reqDataPost->getField();
  1943. // response
  1944. $http = new UmfHttp();
  1945. return $http->httpPost($post_url, $mapfield);
  1946. }
  1947. /**
  1948. * 商业委托---签约确认
  1949. */
  1950. public function CommercialSignConfirmMap($paramsArr=array()) {
  1951. $map = self::publicParams();
  1952. // 业务参数处理
  1953. foreach ($paramsArr as $key => $value) {
  1954. $map->put($key, $value);
  1955. }
  1956. // 公共参数处理
  1957. $map->put("service", "confirm_bind_shortcut");
  1958. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1959. $post_url = $reqDataPost->getUrl();
  1960. $mapfield = $reqDataPost->getField();
  1961. // response
  1962. $http = new UmfHttp();
  1963. return $http->httpPost($post_url, $mapfield);
  1964. }
  1965. /**
  1966. *收款---分期查询用户手续费
  1967. */
  1968. public function queryUserStagingComamtMap($paramsArr=array()){
  1969. $map = self::publicParams();
  1970. // 业务参数处理
  1971. foreach ($paramsArr as $key => $value) {
  1972. $map->put($key, $value);
  1973. }
  1974. // 公共参数处理
  1975. $map->put("service", "query_user_staging_comamt");
  1976. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1977. $post_url = $reqDataPost->getUrl();
  1978. $mapfield = $reqDataPost->getField();
  1979. // response
  1980. $http = new UmfHttp();
  1981. return $http->httpPost($post_url, $mapfield);
  1982. }
  1983. /**
  1984. *收款---立码付获取用户标识
  1985. */
  1986. public function getUseridUnionMap($paramsArr=array()){
  1987. $map = self::publicParams();
  1988. // 业务参数处理
  1989. foreach ($paramsArr as $key => $value) {
  1990. $map->put($key, $value);
  1991. }
  1992. // 公共参数处理
  1993. $map->put("service", "get_userid_union");
  1994. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  1995. $post_url = $reqDataPost->getUrl();
  1996. $mapfield = $reqDataPost->getField();
  1997. // response
  1998. $http = new UmfHttp();
  1999. return $http->httpPost($post_url, $mapfield);
  2000. }
  2001. /**
  2002. * 收款---借记卡认证支付下单获取交易号方法
  2003. */
  2004. public function debitAuthenPayOrderMap($paramsArr=array()) {
  2005. $map = self::publicParams();
  2006. // 业务参数处理
  2007. foreach ($paramsArr as $key => $value) {
  2008. $map->put($key, $value);
  2009. }
  2010. // 公共参数处理
  2011. $map->put("service", "pay_req");
  2012. $map->put("pay_type", "DEBITCARD");
  2013. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  2014. $post_url = $reqDataPost->getUrl();
  2015. $mapfield = $reqDataPost->getField();
  2016. // response
  2017. $http = new UmfHttp();
  2018. return $http->httpPost($post_url, $mapfield);
  2019. }
  2020. /**
  2021. * 收款---借记卡认证支付获取短信验证码方法
  2022. */
  2023. public function debitAuthenPayGetVerifyCodeMap($paramsArr=array()) {
  2024. $map = self::publicParams();
  2025. // 业务参数处理
  2026. foreach ($paramsArr as $key => $value) {
  2027. $map->put($key, $value);
  2028. }
  2029. // 公共参数处理
  2030. $map->put("service", "req_sms_verifycode");
  2031. $map->put("media_type", "MOBILE");
  2032. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  2033. $post_url = $reqDataPost->getUrl();
  2034. $mapfield = $reqDataPost->getField();
  2035. // response
  2036. $http = new UmfHttp();
  2037. return $http->httpPost($post_url, $mapfield);
  2038. }
  2039. /**
  2040. * 收款---借记卡认证支付确认支付方法
  2041. */
  2042. public function debitAuthenPayConfirmMap($paramsArr=array()) {
  2043. $map = self::publicParams();
  2044. // 业务参数处理
  2045. foreach ($paramsArr as $key => $value) {
  2046. $map->put($key, $value);
  2047. }
  2048. // 公共参数处理
  2049. $map->put("service", "pay_confirm");
  2050. $map->put("media_type", "MOBILE");
  2051. $map->put("identity_type","IDENTITY_CARD");
  2052. $map->put("pay_category","02");
  2053. $reqDataPost = MerToPlat::makeRequestDataByPost($map);
  2054. $post_url = $reqDataPost->getUrl();
  2055. $mapfield = $reqDataPost->getField();
  2056. // response
  2057. $http = new UmfHttp();
  2058. return $http->httpPost($post_url, $mapfield);
  2059. }
  2060. }
  2061. ?>