V2TradePaymentJspay.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. <?php
  2. /**
  3. * 聚合正扫接口 - 示例
  4. *
  5. * @author sdk-generator
  6. * @Description
  7. */
  8. namespace App\BsPaySdk\BsPayClassify;
  9. use BsPaySdk\core\BsPay;
  10. use BsPaySdk\core\BsPayClient;
  11. use BsPaySdk\request\V2TradePaymentJspayRequest;
  12. use Illuminate\Support\Facades\Auth;
  13. class V2TradePaymentJspay extends BaseInfo
  14. {
  15. public function pay($merchantKey, $reqSeqId, $trans_amt, $goods_desc, $notify_url)
  16. {
  17. // 2.组装请求参数
  18. $request = new V2TradePaymentJspayRequest();
  19. // 请求日期
  20. $request->setReqDate(date("Ymd"));
  21. // 请求流水号
  22. $request->setReqSeqId($reqSeqId);
  23. // 商户号
  24. $merConfig = BsPay::getConfig($merchantKey);
  25. $request->setHuifuId($merConfig->huifu_id);
  26. // 交易类型
  27. $request->setTradeType('T_JSAPI');
  28. // 交易金额
  29. $request->setTransAmt($trans_amt);
  30. // 商品描述
  31. $request->setGoodsDesc($goods_desc);
  32. // 设置非必填字段
  33. $extendInfoMap = $this->getExtendInfos();
  34. // 异步通知地址
  35. $extendInfoMap["notify_url"] = $notify_url;
  36. $request->setExtendInfo($extendInfoMap);
  37. // 3. 发起API调用
  38. $client = new BsPayClient($merchantKey);
  39. $result = $client->postRequest($request);
  40. return $result;
  41. }
  42. /**
  43. * 非必填字段
  44. *
  45. */
  46. function getExtendInfos()
  47. {
  48. // 设置非必填字段
  49. $extendInfoMap = array();
  50. // 交易有效期
  51. // $extendInfoMap["time_expire"]= "20230418235959";
  52. $extendInfoMap["time_expire"] = date("YmdHis", strtotime("+5 minutes"));
  53. // 禁用信用卡标记
  54. $extendInfoMap["limit_pay_type"] = "NO_CREDIT";
  55. // 是否延迟交易
  56. $extendInfoMap["delay_acct_flag"] = "Y";
  57. // 渠道号
  58. $extendInfoMap["channel_no"] = "";
  59. // 手续费扣款标志
  60. // $extendInfoMap["fee_flag"]= "";
  61. // 营销补贴信息
  62. // $extendInfoMap["combinedpay_data"]= $this->getCombinedpayData();
  63. // 场景类型
  64. $extendInfoMap["pay_scene"] = "02";
  65. // 安全信息
  66. // $extendInfoMap["risk_check_data"] = $this->getRiskCheckData();
  67. // 设备信息
  68. // $extendInfoMap["terminal_device_data"] = $this->getTerminalDeviceData();
  69. // 分账对象
  70. // $extendInfoMap["acct_split_bunch"] = $this->getAcctSplitBunch();
  71. // 传入分帐遇到优惠的处理规则
  72. $extendInfoMap["term_div_coupon_type"] = "0";
  73. // 聚合正扫微信拓展参数集合
  74. $extendInfoMap["wx_data"]= $this->getWxData();
  75. // 支付宝扩展参数集合
  76. // $extendInfoMap["alipay_data"] = $this->getAlipayData();
  77. // 银联参数集合
  78. // $extendInfoMap["unionpay_data"]= $this->getUnionpayData();
  79. // 数字人民币参数集合
  80. // $extendInfoMap["dc_data"]= $this->getDcData();
  81. // 商户贴息标记
  82. $extendInfoMap["fq_mer_discount_flag"] = "N";
  83. // // 异步通知地址
  84. // $extendInfoMap["notify_url"] = "";
  85. // 备注
  86. $extendInfoMap["remark"] = "";
  87. // 账户号
  88. // $extendInfoMap["acct_id"]= "";
  89. return $extendInfoMap;
  90. }
  91. function getCombinedpayData()
  92. {
  93. $dto = array();
  94. // 补贴方汇付编号
  95. // $dto["huifu_id"] = "test";
  96. // 补贴方类型
  97. // $dto["user_type"] = "test";
  98. // 补贴方账户号
  99. // $dto["acct_id"] = "test";
  100. // 补贴金额
  101. // $dto["amount"] = "test";
  102. $dtoList = array();
  103. array_push($dtoList, $dto);
  104. return json_encode($dtoList, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  105. }
  106. function getRiskCheckData()
  107. {
  108. $dto = array();
  109. // ip地址
  110. $dto["ip_addr"] = "180.167.105.130";
  111. // 基站地址
  112. $dto["base_station"] = "192.168.1.1";
  113. // 纬度
  114. $dto["latitude"] = "33.3";
  115. // 经度
  116. $dto["longitude"] = "33.3";
  117. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  118. }
  119. function getTerminalDeviceData()
  120. {
  121. $dto = array();
  122. // 商户设备类型
  123. // $dto["mer_device_type"] = "test";
  124. // 汇付机具号
  125. $dto["devs_id"] = "SPINTP357338300264411";
  126. // 设备类型
  127. $dto["device_type"] = "1";
  128. // 交易设备IP
  129. $dto["device_ip"] = "10.10.0.1";
  130. // 交易设备MAC
  131. $dto["device_mac"] = "";
  132. // 交易设备IMEI
  133. $dto["device_imei"] = "";
  134. // 交易设备IMSI
  135. $dto["device_imsi"] = "";
  136. // 交易设备ICCID
  137. $dto["device_icc_id"] = "";
  138. // 交易设备WIFIMAC
  139. $dto["device_wifi_mac"] = "";
  140. // 交易设备GPS
  141. $dto["device_gps"] = "192.168.0.0";
  142. // 商户终端应用程序版本
  143. // $dto["app_version"] = "";
  144. // SIM 卡卡号
  145. // $dto["icc_id"] = "";
  146. // 商户终端实时经纬度信息
  147. // $dto["location"] = "";
  148. // 商户交易设备IP
  149. // $dto["mer_device_ip"] = "";
  150. // 移动国家代码
  151. // $dto["mobile_country_cd"] = "";
  152. // 移动网络号码
  153. // $dto["mobile_net_num"] = "";
  154. // 商户终端入网认证编号
  155. // $dto["network_license"] = "";
  156. // 商户终端序列号
  157. // $dto["serial_num"] = "";
  158. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  159. }
  160. function getAcctInfosRucan()
  161. {
  162. $dto = array();
  163. // 分账金额
  164. // $dto["div_amt"] = "test";
  165. // 被分账方ID
  166. // $dto["huifu_id"] = "test";
  167. // 账户号
  168. // $dto["acct_id"] = "";
  169. $dtoList = array();
  170. array_push($dtoList, $dto);
  171. return $dtoList;
  172. }
  173. function getAcctSplitBunch()
  174. {
  175. $dto = array();
  176. // 分账明细
  177. // $dto["acct_infos"] = getAcctInfosRucan();
  178. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  179. }
  180. function getGoodsDetailWxRucan()
  181. {
  182. $dto = array();
  183. // 商品编码
  184. // $dto["goods_id"] = "";
  185. // 商品名称
  186. // $dto["goods_name"] = "";
  187. // 商品单价(元)
  188. // $dto["price"] = "";
  189. // 商品数量
  190. // $dto["quantity"] = "";
  191. // 微信侧商品编码
  192. // $dto["wxpay_goods_id"] = "";
  193. $dtoList = array();
  194. array_push($dtoList, $dto);
  195. return $dtoList;
  196. }
  197. function getDetail()
  198. {
  199. $dto = array();
  200. // 单品列表
  201. // $dto["goods_detail"] = getGoodsDetailWxRucan();
  202. // 订单原价(元)
  203. // $dto["cost_price"] = "";
  204. // 商品小票ID
  205. // $dto["receipt_id"] = "";
  206. return $dto;
  207. }
  208. function getStoreInfo()
  209. {
  210. $dto = array();
  211. // 门店id
  212. // $dto["id"] = "";
  213. // 门店名称
  214. // $dto["name"] = "";
  215. // 门店行政区划码
  216. // $dto["area_code"] = "";
  217. // 门店详细地址
  218. // $dto["address"] = "";
  219. $dtoList = array();
  220. array_push($dtoList, $dto);
  221. return $dtoList;
  222. }
  223. function getSceneInfo()
  224. {
  225. $dto = array();
  226. // 门店信息
  227. // $dto["store_info"] = getStoreInfo();
  228. return $dto;
  229. }
  230. function getWxData()
  231. {
  232. $dto = array();
  233. // 子商户公众账号id
  234. $dto["sub_appid"] = config('wechat.official_account.default.app_id');
  235. // 用户标识
  236. $dto["openid"] = Auth::user()->openid;
  237. // 子商户用户标识
  238. // $dto["sub_openid"] = "";
  239. // 附加数据
  240. // $dto["attach"] = "";
  241. // 商品描述
  242. // $dto["body"] = "";
  243. // 商品详情
  244. // $dto["detail"] = getDetail();
  245. // 设备号
  246. // $dto["device_info"] = "";
  247. // 订单优惠标记
  248. // $dto["goods_tag"] = "";
  249. // 实名支付
  250. // $dto["identity"] = "";
  251. // 开发票入口开放标识
  252. // $dto["receipt"] = "";
  253. // 场景信息
  254. // $dto["scene_info"] = getSceneInfo();
  255. // 终端ip
  256. // $dto["spbill_create_ip"] = "";
  257. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  258. }
  259. function getExtendParams()
  260. {
  261. $dto = array();
  262. // 卡类型
  263. $dto["card_type"] = "";
  264. // 支付宝点餐场景类型
  265. $dto["food_order_type"] = "qr_order";
  266. // 花呗分期数
  267. $dto["hb_fq_num"] = "";
  268. // 花呗卖家承担的手续费百分比
  269. $dto["hb_fq_seller_percent"] = "";
  270. // 行业数据回流信息
  271. $dto["industry_reflux_info"] = "string";
  272. // 停车场id
  273. $dto["parking_id"] = "123wsx";
  274. // 系统商编号
  275. $dto["sys_service_provider_id"] = "1111111";
  276. // 信用卡分期资产方式
  277. // $dto["fq_channels"] = "";
  278. return $dto;
  279. }
  280. function getGoodsDetail()
  281. {
  282. $dto = array();
  283. // 商品的编号
  284. $dto["goods_id"] = "12312321";
  285. // 商品名称(元)
  286. $dto["goods_name"] = "阿里";
  287. // 商品单价
  288. $dto["price"] = "0.01";
  289. // 商品数量
  290. $dto["quantity"] = "20";
  291. // 商品描述信息
  292. $dto["body"] = "";
  293. // 商品类目树
  294. $dto["categories_tree"] = "string";
  295. // 商品类目
  296. $dto["goods_category"] = "";
  297. // 商品的展示地址
  298. $dto["show_url"] = "";
  299. $dtoList = array();
  300. array_push($dtoList, $dto);
  301. return $dtoList;
  302. }
  303. function getAlipayData()
  304. {
  305. $dto = array();
  306. // 买家的支付宝唯一用户号
  307. $dto["buyer_id"] = "2088502835860454";
  308. // 支付宝的店铺编号
  309. $dto["alipay_store_id"] = "";
  310. // 买家支付宝账号
  311. $dto["buyer_logon_id"] = "string";
  312. // 业务扩展参数
  313. $dto["extend_params"] = $this->getExtendParams();
  314. // 订单包含的商品列表信息
  315. $dto["goods_detail"] = $this->getGoodsDetail();
  316. // 商户原始订单号
  317. $dto["merchant_order_no"] = "string";
  318. // 商户操作员编号
  319. $dto["operator_id"] = "123213213";
  320. // 销售产品码
  321. $dto["product_code"] = "string";
  322. // 卖家支付宝用户号
  323. $dto["seller_id"] = "string";
  324. // 商户门店编号
  325. $dto["store_id"] = "";
  326. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  327. }
  328. function getPayeeInfo()
  329. {
  330. $dto = array();
  331. // 商户类别
  332. // $dto["mer_cat_code"] = "";
  333. // 二级商户代码
  334. // $dto["sub_id"] = "";
  335. // 二级商户名称
  336. // $dto["sub_name"] = "";
  337. // 终端号
  338. // $dto["term_id"] = "";
  339. return $dto;
  340. }
  341. function getUnionpayData()
  342. {
  343. $dto = array();
  344. // 收款方附加数据
  345. // $dto["acq_addn_data"] = "";
  346. // 地区信息
  347. // $dto["area_info"] = "";
  348. // 持卡人ip
  349. // $dto["customer_ip"] = "";
  350. // 前台通知地址
  351. // $dto["front_url"] = "";
  352. // 订单描述
  353. // $dto["order_desc"] = "";
  354. // 收款方附言
  355. // $dto["payee_comments"] = "";
  356. // 收款方信息
  357. // $dto["payee_info"] = $this->getPayeeInfo();
  358. // 银联分配的服务商机构标识码
  359. // $dto["pnr_ins_id_cd"] = "";
  360. // 请求方自定义域
  361. // $dto["req_reserved"] = "";
  362. // 终端信息
  363. // $dto["term_info"] = "";
  364. // 云闪付用户标识
  365. // $dto["user_id"] = "";
  366. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  367. }
  368. function getDcData()
  369. {
  370. $dto = array();
  371. // 数字货币银行编号
  372. // $dto["digital_bank_no"] = "";
  373. return json_encode($dto, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
  374. }
  375. }