1. 程式人生 > >支付寶開發之手機網站支付(H5支付)

支付寶開發之手機網站支付(H5支付)

其實官方的文件中:https://docs.open.alipay.com/203 介紹的已經很詳細了,我就實地的看文件操作了一遍,具體步驟如下:


一、建立應用


流程如下:




首先要有支付寶開放平臺: https://open.alipay.com/platform/home.htm  賬號,然後登入網站,建立一個應用






輸入應用名稱,然後點選建立,詳細請檢視支付寶官方的介紹:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.1yF5nC&treeId=193&articleId=105894&docType=1


二、填寫應用基礎資訊


然後輸入應用的一些資訊




提交稽核。。



三、配置沙箱


這裡我用支付寶提供的沙盒來測試,螞蟻沙箱環境(Beta)是協助開發者進行介面功能開發及主要功能聯調的模擬環境,在沙箱完成介面開發及主要功能除錯後,請務必在螞蟻正式環境進行完整的功能驗收測試。


點選開發者中心中的沙箱進入沙箱環境頁面,系統已經自動為你建立一個應用,在基礎資訊中可以看到應用資訊。




同時還建立了賬戶





 1. 生成並上傳RSA2(SHA256)的應用公鑰,可以查考這:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=105971&docType=1

 ,下載支付寶官方提供的工具





配置RSA2(SHA256)的應用公鑰後,不需要配置RSA(SHA1)金鑰,RSA和RSA2簽名演算法區別可以參考此處


 2. 編寫程式碼時,請將


  a.請求閘道器修改為:https://openapi.alipaydev.com/gateway.do
  b.appid切換為沙箱的appid
  c.簽名方式使用RSA2
  d.應用私鑰使用第1步生成的RSA2(SHA256)的私鑰(請根據開發語言進行選擇原始或pkcs8格式)
  e.支付寶公鑰切換為第1步配置後應用公鑰後,點選檢視支付寶公鑰看到的公鑰


在JAVA中的使用方式如下:

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do","2016072200101XXXX","請複製第1步中生成的金鑰中的商戶應用私鑰","json","utf-8","沙箱環境RSA2支付寶公鑰","RSA2");
  


四、匯入專案


然後下載支付寶提供的DEMO




下載下來之後,解壓匯入到Eclipse中去,結構如下




修改其中的配置檔案AlipayConfig


   
  1. package com.alipay.config;
  2. public class AlipayConfig {
  3. // 商戶appid
  4. public static String APPID = "";
  5. // 私鑰 pkcs8格式的
  6. public static String RSA_PRIVATE_KEY = "";
  7. // 伺服器非同步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義引數,必須外網可以正常訪問
  8. public static String notify_url = "http://商戶閘道器地址/alipay.trade.wap.pay-JAVA-UTF-8/notify_url.jsp";
  9. // 頁面跳轉同步通知頁面路徑 需http://或者https://格式的完整路徑,不能加?id=123這類自定義引數,必須外網可以正常訪問 商戶可以自定義同步跳轉地址
  10. public static String return_url = "http://商戶閘道器地址/alipay.trade.wap.pay-JAVA-UTF-8/return_url.jsp";
  11. // 請求閘道器地址
  12. public static String URL = "https://openapi.alipay.com/gateway.do";
  13. // 編碼
  14. public static String CHARSET = "UTF-8";
  15. // 返回格式
  16. public static String FORMAT = "json";
  17. // 支付寶公鑰
  18. public static String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjrEVFMOSiNJXaRNKicQuQdsREraftDA9Tua3WNZwcpeXeh8Wrt+V9JilLqSa7N7sVqwpvv8zWChgXhX/A96hEg97Oxe6GKUmzaZRNh0cZZ88vpkn5tlgL4mH/dhSr3Ip00kvM4rHq9PwuT4k7z1DpZAf1eghK8Q5BgxL88d0X07m9X96Ijd0yMkXArzD7jg+noqfbztEKoH3kPMRJC2w4ByVdweWUT2PwrlATpZZtYLmtDvUKG/sOkNAIKEMg3Rut1oKWpjyYanzDgS7Cg3awr1KPTl9rHCazk15aNYowmYtVabKwbGVToCAGK+qQ1gT3ELhkGnf3+h53fukNqRH+wIDAQAB";
  19. // 日誌記錄目錄
  20. public static String log_path = "/log";
  21. // RSA2
  22. public static String SIGNTYPE = "RSA2";
  23. }

把其中的一些資訊替換成 沙箱的資訊,其中同步非同步通知要外網能訪問的,我用的是Ngrok做的代理。




下訂單的是在pay.jsp頁面中。。。用的是JSP


   
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding= "UTF-8"%>
  3. <%@page import="com.alipay.config.AlipayConfig" %>
  4. <%@page import="com.alipay.api.AlipayClient"%>
  5. <%@page import="com.alipay.api.DefaultAlipayClient"%>
  6. <%@page import="com.alipay.api.AlipayApiException"%>
  7. <%@page import="com.alipay.api.response.AlipayTradeWapPayResponse"%>
  8. <%@page import="com.alipay.api.request.AlipayTradeWapPayRequest"%>
  9. <%@page import="com.alipay.api.domain.AlipayTradeWapPayModel" %>
  10. <%@page import="com.alipay.api.domain.AlipayTradeCreateModel"%>
  11. <%
  12. /* *
  13. * 功能:支付寶手機網站支付介面(alipay.trade.wap.pay)介面除錯入口頁面
  14. * 版本:2.0
  15. * 修改日期:2016-11-01
  16. * 說明:
  17. * 以下程式碼只是為了方便商戶測試而提供的樣例程式碼,商戶可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼。
  18. 請確保專案檔案有可寫許可權,不然列印不了日誌。
  19. */
  20. %>
  21. <%
  22. if(request.getParameter("WIDout_trade_no")!=null){
  23. // 商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
  24. String out_trade_no = new String(request.getParameter("WIDout_trade_no").getBytes("ISO-8859-1"),"UTF-8");
  25. // 訂單名稱,必填
  26. String subject = new String(request.getParameter("WIDsubject").getBytes("ISO-8859-1"),"UTF-8");
  27. System.out.println(subject);
  28. // 付款金額,必填
  29. String total_amount=new String(request.getParameter("WIDtotal_amount").getBytes("ISO-8859-1"),"UTF-8");
  30. // 商品描述,可空
  31. String body = new String(request.getParameter("WIDbody").getBytes("ISO-8859-1"),"UTF-8");
  32. // 超時時間 可空
  33. String timeout_express="2m";
  34. // 銷售產品碼 必填
  35. String product_code="QUICK_WAP_PAY";
  36. /**********************/
  37. // SDK 公共請求類,包含公共請求引數,以及封裝了簽名與驗籤,開發者無需關注簽名與驗籤
  38. //呼叫RSA簽名方式
  39. AlipayClient client = new DefaultAlipayClient(AlipayConfig.URL, AlipayConfig.APPID, AlipayConfig.RSA_PRIVATE_KEY, AlipayConfig.FORMAT, AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGNTYPE);
  40. AlipayTradeWapPayRequest alipay_request=new AlipayTradeWapPayRequest();
  41. // 封裝請求支付資訊
  42. AlipayTradeWapPayModel model=new AlipayTradeWapPayModel();
  43. model.setOutTradeNo(out_trade_no);
  44. model.setSubject(subject);
  45. model.setTotalAmount(total_amount);
  46. model.setBody(body);
  47. model.setTimeoutExpress(timeout_express);
  48. model.setProductCode(product_code);
  49. alipay_request.setBizModel(model);
  50. // 設定非同步通知地址
  51. alipay_request.setNotifyUrl(AlipayConfig.notify_url);
  52. // 設定同步地址
  53. alipay_request.setReturnUrl(AlipayConfig.return_url);
  54. // form表單生產
  55. String form = "";
  56. try {
  57. // 呼叫SDK生成表單
  58. form = client.pageExecute(alipay_request).getBody();
  59. response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
  60. response.getWriter().write(form);//直接將完整的表單html輸出到頁面
  61. response.getWriter().flush();
  62. response.getWriter().close();
  63. } catch (AlipayApiException e) {
  64. // TODO Auto-generated catch block
  65. e.printStackTrace();
  66. }
  67. }
  68. %>
  69. <!DOCTYPE html>
  70. <html>
  71. <head>
  72. <title>支付寶手機網站支付介面</title>
  73. <meta http-equiv=" Content-Type" content= "text/html; charset=utf-8">
  74. <style>
  75. .......
  76. </style>
  77. </head>
  78. <body text=#000000 bgColor="#ffffff" leftMargin=0 topMargin=4>
  79. <header class="am-header">
  80. <h1>支付寶手機網站支付介面快速通道(介面名:alipay.trade.wap.pay) </h1>
  81. </header>
  82. <div id="main">
  83. <form name=alipayment action='' method=post target="_blank">
  84. <div id="body" style="clear:left">
  85. <dl class="content">
  86. <dt>商戶訂單號: </dt>
  87. <dd>
  88. <input id="WIDout_trade_no" name="WIDout_trade_no" />
  89. </dd>
  90. <hr class="one_line">
  91. <dt>訂單名稱: </dt>
  92. <dd>
  93. <input id="WIDsubject" name="WIDsubject" />
  94. </dd>
  95. <hr class="one_line">
  96. <dt>付款金額: </dt>
  97. <dd>
  98. <input id="WIDtotal_amount" name="WIDtotal_amount" />
  99. </dd>
  100. <hr class="one_line"/>
  101. <dt>商品描述: </dt>
  102. <dd>
  103. <input id="WIDbody" name="WIDbody" />
  104. </dd>
  105. <hr class="one_line">
  106. <dt> </dt>
  107. <dd id="btn-dd">
  108. <span class="new-btn-login-sp">
  109. <button class="new-btn-login" type="submit" style="text-align:center;">確 認 </button>
  110. </span>
  111. <span class="note-help">如果您點選“確認”按鈕,即表示您同意該次的執行操作。 </span>
  112. </dd>
  113. </dl>
  114. </div>
  115. </form>
  116. <div id="foot">
  117. <ul class="foot-ul">
  118. <li>
  119. 支付寶版權所有 2015-2018 ALIPAY.COM
  120. </li>
  121. </ul>
  122. </div>
  123. </div>
  124. </body>
  125. <script language="javascript">
  126. function GetDateNow() {
  127. var vNow = new Date();
  128. var sNow = "";
  129. sNow += String(vNow.getFullYear());
  130. sNow += String(vNow.getMonth() + 1);
  131. sNow += String(vNow.getDate());
  132. sNow += String(vNow.getHours());
  133. sNow += String(vNow.getMinutes());
  134. sNow += String(vNow.getSeconds());
  135. sNow += String(vNow.getMilliseconds());
  136. document.getElementById( "WIDout_trade_no").value = sNow;
  137. document.getElementById( "WIDsubject").value = "手機網站支付測試商品";
  138. document.getElementById( "WIDtotal_amount").value = "0.01";
  139. 相關推薦

    支付開發手機網站支付(H5支付)

    其實官方的文件中:https://docs.open.alipay.com/203 介紹的已經很詳細了,我就實地的看文件操作了一遍,具體步驟如下: 一、建立應用 流程如下: 首先要有支付寶開放平臺: https://open.alipay.com/platform/h

    一個PHP檔案搞定支付系列手機網站支付(相容微信瀏覽器)

    <?php header('Content-type:text/html; Charset=utf-8'); $appid = 'xxxxx'; //https://open.alipay.com 賬戶中心->金鑰管理->開放平臺金鑰,填寫添加了電腦網站支付的應用的APPID $retur

    支付沙箱電腦網站支付

    《支付寶沙箱連結》 《電腦網站支付快速接入文件》 引入SKD: Maven依賴 程式碼: public class AlipayVO implements Serializable { private static final l

    支付開發平臺第三方授權登入與獲取使用者資訊

      對於第三方登入,我們常見了,很多應用可以進行第三方登入,我常用的有:QQ、微信、新浪、支付寶等等,今天我們就一起來簡單學習一下支付寶第三方授權登入。   開啟支付寶開發平臺,註冊成為開發者,點選開發者中心,在我的應用中建立一個應用:      點選功能資訊,新增我們需要

    Web專案支付模組開發(JAVA)----------------(2)支付對接專案實踐 ||將Demo匯入專案

    (1)通過前面的除錯與執行,我們支付寶的Demo已經可以執行,下面就將它放入到我們的專案中 (2)首先將zfbinfo.properties的檔案放入到我們專案的resource下 (3)將demo中的四個sdk放入到webapp–>WEB

    iOS 手機沒有安裝支付的情況下,不調支付網頁的解決的方法

    sar inf order 手機 tin popu 全部 shared bject NSArray *array = [[UIApplication sharedApplication] windows]; UIWindow* win=[array objectAt

    25、【支付模組開發】——將配置好的支付沙箱環境整合到我們的專案中以及支付介面的編寫

    ####1、將支付寶Demo中的相關檔案複製到我們的專案中: 首先,我們將Demo中src中的包及裡面的檔案複製到我們專案中 同樣,我們也要講zhifubao.properties這個配置檔案方法我們專案中的 resources目錄下: 加下來就是我們的jar包了~ 首先我們先在

    24、【支付模組開發】——將下載下來的支付API Demo執行在web上

    上一篇23、【支付模組快發】——Java對接支付寶步驟(沙箱環境)我們講解了怎麼配置相關配置檔案,下面我們除錯一下怎麼使其在IDEA的web專案中跑起來,然後在瀏覽器中進行操作 我們用IDEA匯入支付寶對接Demo的是時候發現不能執行,下面講解一下怎麼在IDEA中執行支付寶Demo並且在

    支付開發 ——第三方支付

    支付寶開發 第三方支付 線上支付 線上支付是指賣方與買方通過因特網上的電子商務網站進行交易時,銀行為其提供網上資金結算服務的一種業務。它為企業和個人提供了一個安全、快捷、方便的電子商務應用環境和網上資金結算工具。線上支付不僅幫助企業實現了銷售款項的快速歸集,縮短收款週期,同時

    基於notification服務支付微信個人網站收款監控 原始碼下載

    根據notification服務監控手機通知,收到收款金額再通過https反饋給伺服器,需要開通手機通知讀取許可權,有引導客戶開通許可權.同時加入無聲播放音訊,永久守護程序不被系統關掉,穩定性比通過xposed框架hook版的穩定多了,xposed框架的自動生成收款二維碼的我

    支付小程式跳轉到h5頁面web-view

    支付寶小程式跳轉到h5頁面web-view 基礎庫 1.6.0 開始支援,低版本需做相容 元件是一個可以用來承載H5網頁的元件,會自動鋪滿整個小程式頁面。 web-view 要渲染的H5網頁URL。H5網頁URL需要登入小程式管理後臺-小程式詳細-設定中,進行H5域名白名單配置 示

    iOS支付問題:呼叫支付AlipaySDK找不到標頭檔案

    以下是網上找到得解決方案,但未能解決我的問題: http://my.oschina.net/u/734027/blog/358196 解決方案:openssl 和 Util目錄已經新增到Build setting --  header search path 的時候,我是

    支付最新介面 手機版和電腦版 tp框架支付介面

     下載最新的支付寶demo https://docs.open.alipay.com/203/105910  1. 手機版支付介面 目錄 控制器呼叫支付介面    Vendor('alipay.wappay.service.Alip

    支付開發(二)----微信支付開發微信公眾號支付JAVA版

    一、開通微信公眾號 1.1公眾平臺帳號型別 微信公眾平臺分為服務號、企業號、訂閱號。 1、訂閱號:主要偏於為使用者傳達資訊(類似報紙雜誌),認證前後都是每天只可以群發一條訊息; 2、服務號:主要

    android 支付開發 6001錯誤解決方法

    錯誤 錯誤資訊如下: resultStatus={6001};memo={操作已經取消。};result={} 原因 經過研究 發現是公鑰上傳錯了 公鑰與私鑰詳情看開發文件 解決 上傳RSA公鑰,在“合作伙伴金鑰管理”下,點選“RSA加密”後的“新增金鑰”,把自己的公鑰複

    v2實名支付出售|V1型支付賬號出售|出售V2實名支付賬號

    實名支付寶出售 v2實名支付寶出售 v1實名支付寶出售 v2實名支付寶出售,聯系QQ:312020601(純手工註冊的)實名支付寶賬號 V1型支付寶賬號出售,QQ:312020601(穩定安全)賣支付寶V2實名認證支付寶賬號 (聯系QQ_312020601)出售實名支付寶賬號出售,出售v2

    spring_boot_pay支付,微信,銀聯支付詳細代碼案例

    fan target 簽名加密 china 整合 提示 業務 rom sig spring-boot-pay 支付服務:支付寶,微信,銀聯詳細代碼案例(除銀聯支付可以測試以外,支付寶和微信支付測試均需要企業認證,個人無法完成測試),項目啟動前請仔細閱讀 註意事項 。 友情

    支付老大位置不保?第三方支付江湖變數依舊

    auto 很快 問題 商業 頭條 許可 play 百度 應對 比達咨詢2017年第2季度中國第三方移動支付市場發展報告顯示,第2季度的第三方移動支付市場交易規模中,支付寶占51.9%,財付通占34.1%。這就意味著,在目前的第三方移動支付市場中,支付寶和財付通雙雄格局已定

    支付即時到賬以及掃碼支付相關註意事項

    版本 http secret object tools 雜文 其他 重要 兩種   最近在做支付,支付寶感覺比微信相對麻煩點,可能我是第一次做吧。網上的教程不少,可是重復率很高,有些說的雖然很清楚,可是做起來還是麻煩不少,我把自己踩過的坑這裏分享記錄一下,以供大家引以為戒,

    如何使用支付沙箱測試單筆轉賬到支付賬號(php版)

      說明:    本帖是利用支付寶沙箱測試電腦網站支付介面    測試環境:Apache2.4.23 +php 5.6.25    沙箱環境測試正式環境請修改閘道器為下方值  正式環