barpay_test.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: xudong.ding
  5. * Date: 16/5/20
  6. * Time: 下午3:31
  7. */
  8. header("Content-type: text/html; charset=utf-8");
  9. require_once 'model/builder/AlipayTradePayContentBuilder.php';
  10. require_once 'service/AlipayTradeService.php';
  11. if (!empty($_POST['out_trade_no'])&& trim($_POST['out_trade_no'])!="") {
  12. // (必填) 商户网站订单系统中唯一订单号,64个字符以内,只能包含字母、数字、下划线,
  13. // 需保证商户系统端不能重复,建议通过数据库sequence生成,
  14. //$outTradeNo = "barpay" . date('Ymdhis') . mt_rand(100, 1000);
  15. $outTradeNo = $_POST['out_trade_no'];
  16. // (必填) 订单标题,粗略描述用户的支付目的。如“XX品牌XXX门店消费”
  17. $subject = $_POST['subject'];
  18. // (必填) 订单总金额,单位为元,不能超过1亿元
  19. // 如果同时传入了【打折金额】,【不可打折金额】,【订单总金额】三者,则必须满足如下条件:【订单总金额】=【打折金额】+【不可打折金额】
  20. $totalAmount = $_POST['total_amount'];
  21. // (必填) 付款条码,用户支付宝钱包手机app点击“付款”产生的付款条码
  22. $authCode = $_POST['auth_code']; //28开头18位数字
  23. // (可选,根据需要使用) 订单可打折金额,可以配合商家平台配置折扣活动,如果订单部分商品参与打折,可以将部分商品总价填写至此字段,默认全部商品可打折
  24. // 如果该值未传入,但传入了【订单总金额】,【不可打折金额】 则该值默认为【订单总金额】- 【不可打折金额】
  25. //String discountableAmount = "1.00"; //
  26. // (可选) 订单不可打折金额,可以配合商家平台配置折扣活动,如果酒水不参与打折,则将对应金额填写至此字段
  27. // 如果该值未传入,但传入了【订单总金额】,【打折金额】,则该值默认为【订单总金额】-【打折金额】
  28. $undiscountableAmount = "0.01";
  29. // 卖家支付宝账号ID,用于支持一个签约账号下支持打款到不同的收款账号,(打款到sellerId对应的支付宝账号)
  30. // 如果该字段为空,则默认为与支付宝签约的商户的PID,也就是appid对应的PID
  31. $sellerId = "";
  32. // 订单描述,可以对交易或商品进行一个详细地描述,比如填写"购买商品2件共15.00元"
  33. $body = "购买商品2件共15.00元";
  34. //商户操作员编号,添加此参数可以为商户操作员做销售统计
  35. $operatorId = "test_operator_id";
  36. // (可选) 商户门店编号,通过门店号和商家后台可以配置精准到门店的折扣信息,详询支付宝技术支持
  37. $storeId = "test_store_id";
  38. // 支付宝的店铺编号
  39. $alipayStoreId = "test_alipay_store_id";
  40. // 业务扩展参数,目前可添加由支付宝分配的系统商编号(通过setSysServiceProviderId方法),详情请咨询支付宝技术支持
  41. $providerId = ""; //系统商pid,作为系统商返佣数据提取的依据
  42. $extendParams = new ExtendParams();
  43. $extendParams->setSysServiceProviderId($providerId);
  44. $extendParamsArr = $extendParams->getExtendParams();
  45. // 支付超时,线下扫码交易定义为5分钟
  46. $timeExpress = "5m";
  47. // 商品明细列表,需填写购买商品详细信息,
  48. $goodsDetailList = array();
  49. // 创建一个商品信息,参数含义分别为商品id(使用国标)、名称、单价(单位为分)、数量,如果需要添加商品类别,详见GoodsDetail
  50. $goods1 = new GoodsDetail();
  51. $goods1->setGoodsId("good_id001");
  52. $goods1->setGoodsName("XXX商品1");
  53. $goods1->setPrice(3000);
  54. $goods1->setQuantity(1);
  55. //得到商品1明细数组
  56. $goods1Arr = $goods1->getGoodsDetail();
  57. // 继续创建并添加第一条商品信息,用户购买的产品为“xx牙刷”,单价为5.05元,购买了两件
  58. $goods2 = new GoodsDetail();
  59. $goods2->setGoodsId("good_id002");
  60. $goods2->setGoodsName("XXX商品2");
  61. $goods2->setPrice(1000);
  62. $goods2->setQuantity(1);
  63. //得到商品1明细数组
  64. $goods2Arr = $goods2->getGoodsDetail();
  65. $goodsDetailList = array($goods1Arr, $goods2Arr);
  66. //第三方应用授权令牌,商户授权系统商开发模式下使用
  67. $appAuthToken = "";//根据真实值填写
  68. // 创建请求builder,设置请求参数
  69. $barPayRequestBuilder = new AlipayTradePayContentBuilder();
  70. $barPayRequestBuilder->setOutTradeNo($outTradeNo);
  71. $barPayRequestBuilder->setTotalAmount($totalAmount);
  72. $barPayRequestBuilder->setAuthCode($authCode);
  73. $barPayRequestBuilder->setTimeExpress($timeExpress);
  74. $barPayRequestBuilder->setSubject($subject);
  75. $barPayRequestBuilder->setBody($body);
  76. $barPayRequestBuilder->setUndiscountableAmount($undiscountableAmount);
  77. $barPayRequestBuilder->setExtendParams($extendParamsArr);
  78. $barPayRequestBuilder->setGoodsDetailList($goodsDetailList);
  79. $barPayRequestBuilder->setStoreId($storeId);
  80. $barPayRequestBuilder->setOperatorId($operatorId);
  81. $barPayRequestBuilder->setAlipayStoreId($alipayStoreId);
  82. $barPayRequestBuilder->setAppAuthToken($appAuthToken);
  83. // 调用barPay方法获取当面付应答
  84. $barPay = new AlipayTradeService($config);
  85. $barPayResult = $barPay->barPay($barPayRequestBuilder);
  86. switch ($barPayResult->getTradeStatus()) {
  87. case "SUCCESS":
  88. echo "支付宝支付成功:" . "<br>--------------------------<br>";
  89. print_r($barPayResult->getResponse());
  90. break;
  91. case "FAILED":
  92. echo "支付宝支付失败!!!" . "<br>--------------------------<br>";
  93. if (!empty($barPayResult->getResponse())) {
  94. print_r($barPayResult->getResponse());
  95. }
  96. break;
  97. case "UNKNOWN":
  98. echo "系统异常,订单状态未知!!!" . "<br>--------------------------<br>";
  99. if (!empty($barPayResult->getResponse())) {
  100. print_r($barPayResult->getResponse());
  101. }
  102. break;
  103. default:
  104. echo "不支持的交易状态,交易返回异常!!!";
  105. break;
  106. }
  107. return;
  108. }
  109. ?>
  110. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  111. <html>
  112. <head>
  113. <title>支付宝当面付 条码支付</title>
  114. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  115. <style>
  116. *{
  117. margin:0;
  118. padding:0;
  119. }
  120. ul,ol{
  121. list-style:none;
  122. }
  123. .title{
  124. color: #ADADAD;
  125. font-size: 14px;
  126. font-weight: bold;
  127. padding: 8px 16px 5px 10px;
  128. }
  129. .hidden{
  130. display:none;
  131. }
  132. .new-btn-login-sp{
  133. border:1px solid #D74C00;
  134. padding:1px;
  135. display:inline-block;
  136. }
  137. .new-btn-login{
  138. background-color: transparent;
  139. background-image: url("../img/new-btn-fixed.png");
  140. border: medium none;
  141. }
  142. .new-btn-login{
  143. background-position: 0 -198px;
  144. width: 82px;
  145. color: #FFFFFF;
  146. font-weight: bold;
  147. height: 28px;
  148. line-height: 28px;
  149. padding: 0 10px 3px;
  150. }
  151. .new-btn-login:hover{
  152. background-position: 0 -167px;
  153. width: 82px;
  154. color: #FFFFFF;
  155. font-weight: bold;
  156. height: 28px;
  157. line-height: 28px;
  158. padding: 0 10px 3px;
  159. }
  160. .bank-list{
  161. overflow:hidden;
  162. margin-top:5px;
  163. }
  164. .bank-list li{
  165. float:left;
  166. width:153px;
  167. margin-bottom:5px;
  168. }
  169. #main{
  170. width:750px;
  171. margin:0 auto;
  172. font-size:14px;
  173. font-family:'宋体';
  174. }
  175. #logo{
  176. background-color: transparent;
  177. background-image: url("../img/new-btn-fixed.png");
  178. border: medium none;
  179. background-position:0 0;
  180. width:166px;
  181. height:35px;
  182. float:left;
  183. }
  184. .red-star{
  185. color:#f00;
  186. width:10px;
  187. display:inline-block;
  188. }
  189. .null-star{
  190. color:#fff;
  191. }
  192. .content{
  193. margin-top:5px;
  194. }
  195. .content dt{
  196. width:160px;
  197. display:inline-block;
  198. text-align:right;
  199. float:left;
  200. }
  201. .content dd{
  202. margin-left:100px;
  203. margin-bottom:5px;
  204. }
  205. #foot{
  206. margin-top:10px;
  207. }
  208. .foot-ul li {
  209. text-align:center;
  210. }
  211. .note-help {
  212. color: #999999;
  213. font-size: 12px;
  214. line-height: 130%;
  215. padding-left: 3px;
  216. }
  217. .cashier-nav {
  218. font-size: 14px;
  219. margin: 15px 0 10px;
  220. text-align: left;
  221. height:30px;
  222. border-bottom:solid 2px #CFD2D7;
  223. }
  224. .cashier-nav ol li {
  225. float: left;
  226. }
  227. .cashier-nav li.current {
  228. color: #AB4400;
  229. font-weight: bold;
  230. }
  231. .cashier-nav li.last {
  232. clear:right;
  233. }
  234. .alipay_link {
  235. text-align:right;
  236. }
  237. .alipay_link a:link{
  238. text-decoration:none;
  239. color:#8D8D8D;
  240. }
  241. .alipay_link a:visited{
  242. text-decoration:none;
  243. color:#8D8D8D;
  244. }
  245. </style>
  246. </head>
  247. <body text=#000000 bgColor="#ffffff" leftMargin=0 topMargin=4>
  248. <div id="main">
  249. <div id="head">
  250. <dl class="alipay_link">
  251. <a target="_blank" href="http://www.alipay.com/"><span>支付宝首页</span></a>|
  252. <a target="_blank" href="https://b.alipay.com/home.htm"><span>商家服务</span></a>|
  253. <a target="_blank" href="http://help.alipay.com/support/index_sh.htm"><span>帮助中心</span></a>
  254. </dl>
  255. <span class="title">支付宝 当面付2.0 条码支付接口</span>
  256. </div>
  257. <div class="cashier-nav">
  258. <ol>
  259. <li class="current">1、确认信息 →</li>
  260. <li>2、点击确认 →</li>
  261. <li class="last">3、确认完成</li>
  262. </ol>
  263. </div>
  264. <form name=alipayment action="" method=post target="_blank">
  265. <div id="body" style="clear:left">
  266. <dl class="content">
  267. <dt>商户订单号:</dt>
  268. <dd>
  269. <span class="null-star">*</span>
  270. <input size="30" name="out_trade_no" />
  271. <span>商户网站订单系统中唯一订单号,必填
  272. </span>
  273. </dd>
  274. <dt>订单名称:</dt>
  275. <dd>
  276. <span class="null-star">*</span>
  277. <input size="30" name="subject" />
  278. <span>必填
  279. </span>
  280. </dd>
  281. <dt>付款金额:</dt>
  282. <dd>
  283. <span class="null-star">*</span>
  284. <input size="30" name="total_amount" />
  285. <span>必填
  286. </span>
  287. </dd>
  288. <dt>付款条码:</dt>
  289. <dd>
  290. <span class="null-star">*</span>
  291. <input size="30" name="auth_code" />
  292. <span>必填
  293. </span>
  294. </dd>
  295. <dt></dt>
  296. <dd>
  297. <span class="new-btn-login-sp">
  298. <button class="new-btn-login" type="submit" style="text-align:center;">确 认</button>
  299. </span>
  300. </dd>
  301. </dl>
  302. </div>
  303. </form>
  304. <div id="foot">
  305. <ul class="foot-ul">
  306. <li><font class="note-help">如果您点击“确认”按钮,即表示您同意该次的执行操作。 </font></li>
  307. <li>
  308. 支付宝版权所有 2011-2015 ALIPAY.COM
  309. </li>
  310. </ul>
  311. </div>
  312. </div>
  313. </body>
  314. </html>