BusinessParams.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. namespace Yurun\PaySDK\AlipayApp\MiniApp\Params\Pay;
  3. /**
  4. * 支付宝小程序支付下单业务参数类.
  5. */
  6. class BusinessParams
  7. {
  8. use \Yurun\PaySDK\Traits\JSONParams;
  9. /**
  10. * 订单描述.
  11. *
  12. * @var string
  13. */
  14. public $body;
  15. /**
  16. * 订单标题.
  17. *
  18. * @var string
  19. */
  20. public $subject = '';
  21. /**
  22. * 买家的支付宝唯一用户号(2088开头的16位纯数字)
  23. * 特殊可选.
  24. *
  25. * @var string
  26. */
  27. public $buyer_id = '';
  28. /**
  29. * 商户订单号,64个字符以内、可包含字母、数字、下划线;需保证在商户端不重复.
  30. *
  31. * @var string
  32. */
  33. public $out_trade_no;
  34. /**
  35. * 卖家支付宝用户ID。
  36. * 如果该值为空,则默认为商户签约账号对应的支付宝用户ID.
  37. *
  38. * @var string
  39. */
  40. public $seller_id;
  41. /**
  42. * 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
  43. * 该参数在请求到支付宝时开始计时。
  44. *
  45. * @var string
  46. */
  47. public $timeout_express;
  48. /**
  49. * 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000].
  50. *
  51. * @var float
  52. */
  53. public $total_amount = 0;
  54. /**
  55. * 可打折金额.
  56. * 参与优惠计算的金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
  57. * 如果该值未传入,但传入了【订单总金额】,【不可打折金额】则该值默认为【订单总金额】-【不可打折金额】.
  58. *
  59. * @var float
  60. */
  61. public $discountable_amount;
  62. /**
  63. * 销售产品码。
  64. * 如果签约的是当面付快捷版,则传OFFLINE_PAYMENT;
  65. * 其它支付宝当面付产品传FACE_TO_FACE_PAYMENT;
  66. * 不传默认使用FACE_TO_FACE_PAYMENT;.
  67. *
  68. * @var string
  69. */
  70. public $product_code = 'FACE_TO_FACE_PAYMENT';
  71. /**
  72. * 业务扩展参数,详见业务扩展参数说明.
  73. *
  74. * @var \Yurun\PaySDK\AlipayApp\MiniApp\Params\Pay\ExtendParams
  75. */
  76. public $extend_params;
  77. /**
  78. * 商户操作员编号.
  79. *
  80. * @var string
  81. */
  82. public $operator_id;
  83. /**
  84. * 商户门店编号。该参数用于请求参数中以区分各门店,非必传项。
  85. *
  86. * @var string
  87. */
  88. public $store_id;
  89. /**
  90. * 商户机具终端编号.
  91. *
  92. * @var string
  93. */
  94. public $terminal_id;
  95. /**
  96. * 描述结算信息,json格式,详见结算参数说明.
  97. *
  98. * @var array
  99. */
  100. public $settle_info;
  101. /**
  102. * 物流信息.
  103. *
  104. * @var array
  105. */
  106. public $logistics_detail;
  107. /**
  108. * 商户传入业务信息,具体值要和支付宝约定,应用于安全,营销等参数直传场景,格式为json格式.
  109. *
  110. * @var array
  111. */
  112. public $business_params;
  113. /**
  114. * 收货人及地址信息.
  115. *
  116. * @var array
  117. */
  118. public $receiver_address_info;
  119. public function __construct()
  120. {
  121. $this->extend_params = new ExtendParams();
  122. }
  123. public function toString()
  124. {
  125. $obj = (array) $this;
  126. $result = $obj['extend_params']->toArray();
  127. if (null === $result)
  128. {
  129. unset($obj['extend_params']);
  130. }
  131. else
  132. {
  133. $obj['extend_params'] = $result;
  134. }
  135. if (null === $obj['logistics_detail'])
  136. {
  137. unset($obj['logistics_detail']);
  138. }
  139. else
  140. {
  141. $obj['logistics_detail'] = json_encode($obj['logistics_detail']);
  142. }
  143. if (null === $obj['business_params'])
  144. {
  145. unset($obj['business_params']);
  146. }
  147. else
  148. {
  149. $obj['business_params'] = json_encode($obj['business_params']);
  150. }
  151. if (null === $obj['receiver_address_info'])
  152. {
  153. unset($obj['receiver_address_info']);
  154. }
  155. else
  156. {
  157. $obj['receiver_address_info'] = json_encode($obj['receiver_address_info']);
  158. }
  159. foreach ($obj as $key => $value)
  160. {
  161. if (null === $value)
  162. {
  163. unset($obj[$key]);
  164. }
  165. }
  166. return json_encode($obj);
  167. }
  168. }