V2TradePreauthRequestDemo.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. <?php
  2. /**
  3. * 微信支付宝预授权 - 示例
  4. *
  5. * @author sdk-generator
  6. * @Description
  7. */
  8. namespace BsPayDemo;
  9. // 1. 资源及配置加载
  10. require_once dirname(__FILE__) . "/loader.php";
  11. require_once dirname(__FILE__). "/../BsPaySdk/request/V2TradePreauthRequest.php";
  12. use BsPaySdk\core\BsPayClient;
  13. use BsPaySdk\request\V2TradePreauthRequest;
  14. // 2.组装请求参数
  15. $request = new V2TradePreauthRequest();
  16. // 请求日期
  17. $request->setReqDate(date("Ymd"));
  18. // 请求流水号
  19. $request->setReqSeqId(date("YmdHis").mt_rand());
  20. // 商户号
  21. $request->setHuifuId("6666000108854952");
  22. // 交易金额
  23. $request->setTransAmt("0.02");
  24. // 商品描述
  25. $request->setGoodsDesc("123213213");
  26. // 支付授权码
  27. $request->setAuthCode("280426995846228615");
  28. // 安全信息
  29. $request->setRiskCheckData(getRiskCheckData());
  30. // 设置非必填字段
  31. $extendInfoMap = getExtendInfos();
  32. $request->setExtendInfo($extendInfoMap);
  33. // 3. 发起API调用
  34. $client = new BsPayClient();
  35. $result = $client->postRequest($request);
  36. if (!$result || $result->isError()) { //失败处理
  37. var_dump($result -> getErrorInfo());
  38. } else { //成功处理
  39. var_dump($result);
  40. }
  41. /**
  42. * 非必填字段
  43. *
  44. */
  45. function getExtendInfos() {
  46. // 设置非必填字段
  47. $extendInfoMap = array();
  48. // 外部订单号
  49. $extendInfoMap["out_ord_id"]= "2021031722001427671459048436";
  50. // 交易发起时间
  51. $extendInfoMap["send_time"]= "12345678901234567";
  52. // 交易失效时间
  53. $extendInfoMap["time_expire"]= "20221130121212";
  54. // 禁用信用卡标记
  55. $extendInfoMap["limit_pay_type"]= "NO_CREDIT";
  56. // 场景类型
  57. $extendInfoMap["pay_scene"]= "02";
  58. // 渠道号
  59. $extendInfoMap["channel_no"]= "";
  60. // 传入分帐遇到优惠的处理规则
  61. $extendInfoMap["term_div_coupon_type"]= "1";
  62. // 支付宝扩展参数集合
  63. $extendInfoMap["alipay_data"]= getAlipayData();
  64. // 微信扩展参数集合
  65. $extendInfoMap["wx_data"]= getWxData();
  66. // 商户扩展域
  67. $extendInfoMap["mer_priv"]= "{\"callType\":\"01\",\"lc\":\"12345678901234567890123456789012123\",\"softVersion\":\"6.5.3\"}";
  68. // 备注
  69. $extendInfoMap["remark"]= "123213132132";
  70. // 授权号
  71. $extendInfoMap["auth_no"]= "608467";
  72. // 批次号
  73. $extendInfoMap["batch_id"]= "987654";
  74. // 商户操作员号
  75. $extendInfoMap["mer_oper_id"]= "12345678901234567890123456789012";
  76. // 输入密码提示
  77. // $extendInfoMap["password_trade"]= "";
  78. // 设备信息
  79. $extendInfoMap["terminal_device_data"]= getTerminalDeviceData();
  80. // 异步通知地址
  81. $extendInfoMap["notify_url"]= "http://www.baidu.com";
  82. return $extendInfoMap;
  83. }
  84. function getExtendParams() {
  85. $dto = array();
  86. // 卡类型
  87. $dto["card_type"] = "";
  88. // 支付宝点餐场景类型
  89. $dto["food_order_type"] = "qr_order";
  90. // 花呗分期数
  91. $dto["hb_fq_num"] = "";
  92. // 手续费百分比
  93. $dto["hb_fq_seller_percent"] = "";
  94. // 行业数据回流信息
  95. $dto["industry_reflux_info"] = "";
  96. // 系统商编号
  97. $dto["sys_service_provider_id"] = "";
  98. return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  99. }
  100. function getAliGoodsDetail() {
  101. $dto = array();
  102. // 商品的编号
  103. $dto["goods_id"] = "12345678901234567890123456789012";
  104. // 商品名称
  105. $dto["goods_name"] = "111";
  106. // 商品单价
  107. $dto["price"] = "1.01";
  108. // 商品数量
  109. $dto["quantity"] = "1";
  110. // 商品描述信息
  111. $dto["body"] = "";
  112. // 商品类目树
  113. $dto["categories_tree"] = "";
  114. // 商品类目
  115. $dto["goods_category"] = "";
  116. // 商品的展示地址
  117. $dto["show_url"] = "321313";
  118. $dtoList = array();
  119. array_push($dtoList, $dto);
  120. return $dtoList;
  121. }
  122. function getAlipayData() {
  123. $dto = array();
  124. // 支付宝的店铺编号
  125. $dto["alipay_store_id"] = "";
  126. // 业务扩展参数
  127. $dto["extend_params"] = getExtendParams();
  128. // 订单包含的商品列表信息
  129. $dto["goods_detail"] = getAliGoodsDetail();
  130. // 商户操作员编号
  131. $dto["operator_id"] = "1234567890123456789012345678";
  132. // 商户门店编号
  133. $dto["store_id"] = "";
  134. return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  135. }
  136. function getWxGoodsDetailRucan() {
  137. $dto = array();
  138. // 商品编码
  139. $dto["goods_id"] = "1232131";
  140. // 商品名称
  141. $dto["goods_name"] = "汇付天下";
  142. // 商品单价
  143. $dto["price"] = "0.50";
  144. // 商品数量
  145. $dto["quantity"] = 0;
  146. // 微信侧商品编码
  147. $dto["wxpay_goods_id"] = "";
  148. $dtoList = array();
  149. array_push($dtoList, $dto);
  150. return $dtoList;
  151. }
  152. function getWxGoodsRucan() {
  153. $dto = array();
  154. // 单品列表
  155. $dto["goods_detail"] = getWxGoodsDetailRucan();
  156. // 订单原价
  157. $dto["cost_price"] = "1";
  158. // 商品小票ID
  159. $dto["receipt_id"] = "";
  160. return $dto;
  161. }
  162. function getWxStoreRucan() {
  163. $dto = array();
  164. // 门店详细地址
  165. $dto["address"] = "汇付天下桂林路";
  166. // 门店行政区划码
  167. $dto["area_code"] = "310";
  168. // 门店id
  169. $dto["id"] = "1232131";
  170. // 门店名称
  171. $dto["name"] = "测试";
  172. return $dto;
  173. }
  174. function getWxSceneRucan() {
  175. $dto = array();
  176. // 门店信息
  177. $dto["store_info"] = getWxStoreRucan();
  178. return $dto;
  179. }
  180. function getWxData() {
  181. $dto = array();
  182. // 附加数据
  183. $dto["attach"] = "";
  184. // 商品详情
  185. $dto["detail"] = getWxGoodsRucan();
  186. // 设备号
  187. $dto["device_info"] = "";
  188. // 订单优惠标记
  189. $dto["goods_tag"] = "12321312";
  190. // 场景信息
  191. $dto["scene_info"] = getWxSceneRucan();
  192. // 子商户公众账号ID
  193. $dto["sub_appid"] = "wx48abf94e085e98e1";
  194. return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  195. }
  196. function getRiskCheckData() {
  197. $dto = array();
  198. // 基站地址
  199. $dto["base_station"] = "192.168.1.1";
  200. // ip地址
  201. $dto["ip_addr"] = "180.167.105.130";
  202. // 纬度
  203. $dto["latitude"] = "33.3";
  204. // 经度
  205. $dto["longitude"] = "33.3";
  206. return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  207. }
  208. function getTerminalDeviceData() {
  209. $dto = array();
  210. // 商户终端版本号
  211. $dto["app_version"] = "";
  212. // 交易设备GPS
  213. $dto["device_gps"] = "";
  214. // 交易设备ICCID
  215. $dto["device_icc_id"] = "";
  216. // 交易设备IMEI
  217. $dto["device_imei"] = "";
  218. // 交易设备IMSI
  219. $dto["device_imsi"] = "";
  220. // 交易设备IP
  221. $dto["device_ip"] = "10.10.0.1";
  222. // 交易设备MAC
  223. $dto["device_mac"] = "";
  224. // 设备类型
  225. $dto["device_type"] = "1";
  226. // 交易设备WIFIMAC
  227. $dto["device_wifi_mac"] = "";
  228. // 汇付机具号
  229. $dto["devs_id"] = "SPINTP366020000360401";
  230. // ICCID
  231. $dto["icc_id"] = "";
  232. // 商户终端实时经纬度信息
  233. $dto["location"] = "+32.10520/+118.80593";
  234. // 商户交易设备IP
  235. $dto["mer_device_ip"] = "";
  236. // 商户设备类型
  237. $dto["mer_device_type"] = "01";
  238. // 移动国家代码
  239. $dto["mobile_country_cd"] = "";
  240. // 移动网络号码
  241. $dto["mobile_net_num"] = "";
  242. // 商户终端入网认证编号
  243. $dto["network_license"] = "P3111";
  244. // 商户终端序列号
  245. $dto["serial_num"] = "";
  246. return json_encode($dto,JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
  247. }