1. 程式人生 > >線上支付功能實現程式碼

線上支付功能實現程式碼

我們都知道,在現在的網站中,基本上都會有支付功能,線上支付作為一個潮流已是現代化網站的必備功能模組,那麼幾天我就分享一下如果來做這個線上支付功能。

線上支付一般來說有兩種實現方式,一種是呼叫各個銀行提供的介面,另一種是使用第三方整合好的支付功能。兩種方式各有優劣,這個相信行內人士都是非常瞭解的了。對於第三方支付來說會需要提交企業5證來驗證,還會有部分手續費,但是實現起來就非常方便了。對於直接使用銀聯介面的話就是使用起來必來麻煩,要為各個銀行寫介面實現,但是相比起來就更加安全了。

本文主要講的是使用第三方支付平臺來整合到我們的專案中,實現實際的支付功能。本文使用的例程是一個真實的支付過程,請注意,不要再測試中支付過多金額,否則後果自負。以前文說到的一個網上書店系統來說明,這裡接入的是易寶支付的測試指紋和介面。如實際企業開發者可以使用企業牌照申請介面,如是普通開發者用來測試線上支付功能的可以直接使用。

我們先來說應該如何生成訂單。

一、資料庫設計

我們需要來一個訂單表,訂單詳情表,以及訂單的自動化序列表

  1. --訂單表
  2. createtable orders(  
  3.     ordernum varchar(100) primarykey,  
  4.     price float(8,2),  
  5.     number int,  
  6.     status int,   --支付成功狀態位會改變
  7.     customerId VARCHAR(100),  
  8.     CONSTRAINT customerId_fk FOREIGNKEY (customerId) 
    REFERENCES customers(id)    
  9. )  
  10. )  
  11. --訂單詳情表
  12. createtable orderitems(  
  13.     id varchar(100) primarykey,  
  14.     number int,  
  15.     price float(8,2),  
  16.     ordernum varchar(100),  
  17.     bookid varchar(100),  
  18.     CONSTRAINT ordernum_fk FOREIGNKEY (ordernum) REFERENCES orders(ordernum),  
  19.     CONSTRAINT
     bookid_fk FOREIGNKEY (bookid) REFERENCES books(id)      
  20. )  
  21. --訂單編號表
  22. createtable ordernum(  
  23.     prefix date,  
  24.     num int
  25. )  

二、bean設計

生成其get,set方法,並且記得要序列化Serializable

  1. private String ordernum;  
  2.     privatefloat price;  
  3.     privateint number;  
  4.     privateint status;  


三、介面設計

設計訂單的實體類

  1. publicinterface OrderDao {  
  2.     void save(Order order);  
  3.     Order findByNum(String ordernum);  
  4.     void update(Order order);  
  5.     //訂單號降序排序
  6.     List<Order> findByCustomerId(String customerId);  
  7.     List<OrderItem> findOrderItem(String ordernum);  
  8. }  

介面的實現
  1. publicclass OrderDaoImpl implements OrderDao {  
  2.     private QueryRunner qr=new QueryRunner(C3P0Util.getDataSource());  
  3.     //儲存訂單
  4.     @Override
  5.     publicvoid save(Order order) {  
  6.         try {  
  7.             qr.update("insert into orders (ordernum,price,number,status,customerId) values (?,?,?,?,?)",   
  8.                     order.getOrdernum(),order.getPrice(),order.getNumber(),order.getStatus(),  
  9.                     order.getCustomer()==null?null:order.getCustomer().getId());  
  10.             List<OrderItem> items = order.getItems();  
  11.             for(OrderItem item:items){  
  12.                 qr.update("insert into orderitems (id,number,price,ordernum,bookid) values (?,?,?,?,?)",   
  13.                         item.getId(),item.getNumber(),item.getPrice(),order.getOrdernum(),item.getBook()==null?null:item.getBook().getId());  
  14.             }  
  15.         } catch (SQLException e) {  
  16.             thrownew RuntimeException(e);  
  17.         }  
  18.     }  
  19.     public Order findByNum(String ordernum) {  
  20.         try {  
  21.             Order order = qr.query("select * from orders where ordernum=?"new BeanHandler<Order>(Order.class), ordernum);  
  22.             if(order!=null){  
  23.                 Customer customer = qr.query("select * from customers where id=(select customerId from orders where ordernum=?)"new BeanHandler<Customer>(Customer.class), ordernum);  
  24.                 order.setCustomer(customer);  
  25.             }  
  26.             return order;  
  27.         } catch (SQLException e) {  
  28.             thrownew RuntimeException(e);  
  29.         }  
  30.     }  
  31.     publicvoid update(Order order) {  
  32.         try {  
  33.             qr.update("update orders set price=?,number=?,status=? where ordernum=?", order.getPrice(),order.getNumber(),order.getStatus(),order.getOrdernum());  
  34.         } catch (SQLException e) {  
  35.             thrownew RuntimeException(e);  
  36.         }  
  37.     }  
  38.     @Override
  39.     public List<Order> findByCustomerId(String customerId) {  
  40.         try {  
  41.             List<Order> orders=qr.query("select * from orders where customerId=?  order by ordernum desc "new BeanListHandler<Order>(Order.class),customerId);  
  42.             if(orders!=null){  
  43.                 Customer customer=qr.query("select * from customers where id=? ",new BeanHandler<Customer>(Customer.class),customerId);  
  44.                 for (Order order : orders) {  
  45.                     order.setCustomer(customer);  
  46. 相關推薦

    線上支付功能實現程式碼

    我們都知道,在現在的網站中,基本上都會有支付功能,線上支付作為一個潮流已是現代化網站的必備功能模組,那麼幾天我就分享一下如果來做這個線上支付功能。 線上支付一般來說有兩種實現方式,一種是呼叫各個銀行提供的介面,另一種是使用第三方整合好的支付功能。兩種方式各有優劣

    java 線上支付功能實現

    實現的兩種方法 1 直接與銀行對接:   交易比較安全,適合資金流量比較大的企業,這種方案適合於,每月結算金額百萬以上的.                            但開發工作量比較大,而且銀行會不定期升級交易系統,每個銀行的介面都不同,交納的費用也不低. 2 通過中間公司 間接與銀行對接:  

    javaweb實現線上支付功能

    1、線上支付概述什麼是線上支付呢?沒錯,就是在網上花錢!大家一定有過這樣的經歷。但是你可能不太瞭解線上支付的“內情”,下面我們來了解一下!如果你現在開始經營一個電子商務網站,使用者買了東西一定要支付,你的網站一定要可以連線各大銀行了,然後在各大銀行支付完成後,再返回到你的網站

    【視訊】詳解小程式wx.requestpayment用法,實現小程式線上支付功能

    開發小程式商城,外賣小程式,銷售型小程式等,具有線上支付功能的,都會使用wx.requestpayment()這個介面。好多學員反饋說這個介面很難,今天子恆老師跟你分享一下,怎麼使用wx.requestpayment實現微信支付。一、 使用wx.requestpayment實

    spring boot項目之微信支付功能實現詳細介紹

    tab 流程 invalid body 正方形 無法 數據 fmt -s 對接微信支付功能主要有以下幾個步驟, 而其第一個關鍵點就是獲取OpenID,在這裏介紹兩種獲取方式: 一、微信授權 微信網頁授權 如果用戶在微信客戶端中訪問第三方網頁,公

    微信小程序 使用微信支付功能實現在線支付訂單

    navi order lose ray 如果 image 全部 extern base 以前做過PC頁面微信支付,但是這次在小程序 直接調用微信支付功能還是方便很多 先放個微信官方API鏈接:https://pay.weixin.qq.com/wiki/doc/api/wx

    【SSH網上商城專案實戰23】完成線上支付功能

        轉自: https://blog.csdn.net/eson_15/article/details/51464415  上一節我們做好了支付頁面的顯示,從上一節支付頁面顯示的jsp程式碼中可以看出,當用戶點選

    微信支付功能實現

    < view class= "container"> < input type= "text" bindinput= "getOrderCode" style= "border:1px solid #ccc;"

    個人支付功能實現

    個人支付功能實現 效果 前置條件 android手機一部 安裝payself(備註允許後臺執行,該APP獲取所有推送相關特權—注意部分手機可能設定比較蛋疼,或者乾脆不支援,悉知。。。) 支付寶、微信(備註如上) 伺服器一臺

    登入功能實現程式碼

    簡單的登入程式碼實現 第一步,頁面提交登入請求 //form表單提交請求 <form id="loginFrom"> <div>

    讓你的微信小程式具有線上支付功能

    最近需要在微信小程式中用到線上支付功能,於是看了一下官方的文件,發現要在小程式裡實現微信支付還是很方便的,如果你以前開發過服務號下的微信支付,那麼你會發現其實小程式裡的微信支付和服務號裡的開發過程如出一轍,下面我就具體說一下小程式裡微信支付的開發流程和注意點。 1.

    微信小程式具有線上支付功能

    最近需要在微信小程式中用到線上支付功能,於是看了一下官方的文件,發現要在小程式裡實現微信支付還是很方便的,如果你以前開發過服務號下的微信支付,那麼你會發現其實小程式裡的微信支付和服務號裡的開發過程如出一轍,下面我就具體說一下小程式裡微信支付的開發流程和注意點。 1.開通微信支付和微信商戶號 這個過程就和

    Android開發中支付寶接入支付功能實現(詳細步驟)

    今天做了一下支付寶的支付功能的實現,記錄一下。(注意:因為服務時常更新,所以主要記錄操作方法,而非依葫蘆畫瓢。另外,這次簡單實現了訂單提交—結果獲取,並沒有做那些進一步的驗證,後期會逐步完善)步驟如下:下載最新的sdk則點選上圖中下面的那個"SDK及DEMO下載",然後選擇相

    Android手機SD卡檔案或目錄拷貝、複製、貼上功能實現程式碼

    package com.copy.file; /** * @author wainiwann * Android SD卡檔案目錄拷貝操作 * */ import java.io.File; import java.io.FileInputStream; import ja

    PHP實現微信支付功能開發+例項程式碼

    namespace Wechat\Controller; use Think\Controller; /** * 父類控制器,需要繼承 * @file ParentController.class.php * @author Gary <[email protected]> *

    微信小程序 支付功能(前端)的實現

    pen 回退 ole pack spa session 統一支付 ges 應用 只提供微信小程序端代碼: 1 var app = getApp(); 2 Page({ 3 data: {}, 4 onLoad: function (options) {

    微信小程序實現支付功能

    註冊 nat XML 方法 一個 結果 intra fun abcdefg 小程序支付,沒有封裝支付代碼:直接上一段可用的流程代碼吧:微信小程序支付官網文檔有詳細的說明,這裏我就不再贅述啦:客戶端js: wx.request({ url:‘https://www.xxxx

    微信小程序 支付功能 服務器端(TP5.1)實現

    ces 形式 當前 單位 class private cda 庫存 vat 首先下載微信支付SDK ,將整個目錄的文件放在 /application/extend/WxPay 目錄下 在使用SDK之前我們需要對 WxPay.Config.php 進行配置 <?ph

    Spring MVC+Spring+Mybatis實現支付支付功能(圖文詳解)

    通用 ltr 由於 題解 urn ipa 源代碼 ram abi 前言 本教程詳細介紹了如何使用ssm框架實現支付寶支付功能。本文章分為兩大部分,分別是「支付寶測試環境代碼測試」和「將支付寶支付整合到ssm框架」,詳細的代碼和圖文解釋,自己實踐的時候一定仔細閱讀相關文

    ThinkPHP5.0 實現 app支付支付功能

    napi security rsa 賬號 sdk n) success format 修改 https://mp.weixin.qq.com/s/EbfOmEGN93QAnrZOKVP0Vg 先來個效果圖 做這個支付寶支付我總共用到了三個控制器: 1:支付寶支付控制器