支付寶開放平臺建立應用、用戶受權及應用受權

學習 · 分享

銀盒子技術團隊分享平臺html

支付寶開放平臺建立應用、用戶受權及應用受權

支付寶開放平臺建立應用、用戶受權及應用受權java

 

1、建立應用mysql

一、登陸螞蟻金服開放平臺(open.alipay.com),web

 

二、進入開發者中心中,建立登記您的應用,並提交審覈,審覈經過後會爲您生成應用惟一標識(APPID)《開放平臺應用建立指南算法

 

2、配置密鑰spring

一、 開發者調用接口前須要先生成RSA密鑰,RSA密鑰包含應用私鑰(APP_PRIVATE_KEY)、應用公鑰(APP_PUBLIC_KEY)。sql

二、生成密鑰後在開放平臺開發者中心進行密鑰配置,配置完成後能夠獲取支付寶公鑰(ALIPAY_PUBLIC_KEY)   注:生成密鑰方法鏈接(生成與配置),生成密鑰工具下載WINDOWS數據庫

 

3、搭建配置開發環境json

服務端SDK下載地址:SDK1.5api

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

關鍵參數(公共)說明:

配置參數 示例值解釋 獲取方式/示例值
URL 支付寶網關(固定) https://openapi.alipay.com/gateway.do
APPID APPID 即建立應用後生成 獲取見上面應用設置
APP_PRIVATE_KEY 開發者私鑰,由開發者本身生成 獲取詳見上面應用設置
FORMAT 參數返回格式,只支持json json(固定)
CHARSET 編碼集,支持GBK/UTF-8 開發者根據實際工程編碼配置
ALIPAY_PUBLIC_KEY 支付寶公鑰,由支付寶生成 獲取詳見上面應用設置
SIGN_TYPE 商戶生成簽名字符串所使用的簽名算法類型,目前支持RSA2和RSA,推薦使用RSA2 RSA2

 

1.、用戶信息受權(用戶信息受權

用戶信息受權主要是爲了獲取支付寶用戶ID(USER_ID)、受權令牌(access_token),便於開發者處理自身業務邏輯的時候使用

用戶信息受權URL拼裝規則:

https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

 

二、應用受權(應用受權概述

應用受權URL拼裝規則:

https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

私有請求參數:

參數 參數名稱 類型 必填 描述 範例
grant_type 受權類型 String 1.code換token

 

2.Refresh_token換

Token

1.authorization_code

 

2. refresh_token

code 受權碼 String   bf67d8d5ed754af297f72cc482
refresh_token 刷新令牌 String 與code二選一 201510BB0c409dd5758b4d939d4008a525X62

 

注:接口權限值,目前只支持auth_user(獲取用戶信息網站支付寶登陸)、auth_base(用戶信息受權)、auth_ecard(商戶會員卡)、auth_invoice_info(支付寶閃電開票)、auth_puc_charge(生活繳費)五個值;

 

4、關於沙箱

沙箱是開放平臺提供給開發者用戶調試接口的環境,具體操做步驟見 沙箱接入指南

獲取用戶信息沙箱接入注意點

一、獲取用戶信息支持沙箱接入;在沙箱調通接口後,必須在線上進行測試與驗收,全部返回碼及業務邏輯以線上爲準;

二、沙箱受權url連接拼接規則爲:

https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

 

 

 

數據庫 30條軍規(轉載)

轉載地址:
http://blog.csdn.net/jiangzhexi/article/details/55817047?utm_source=itdadao&utm_medium=referral

軍規適用場景:併發量大、數據量大的互聯網業務
軍規:介紹內容
解讀:講解緣由,解讀比軍規更重要

1、基礎規範

(1)必須使用InnoDB存儲引擎
解讀:支持事務、行級鎖、併發性能更好、CPU及內存緩存頁優化使得資源利用率更高

(2)必須使用UTF8字符集
解讀:萬國碼,無需轉碼,無亂碼風險,節省空間

(3)數據表、數據字段必須加入中文註釋
解讀:N年後誰tm知道這個r1,r2,r3字段是幹嗎的

(4)禁止使用存儲過程、視圖、觸發器、Event
解讀:高併發大數據的互聯網業務,架構設計思路是「解放數據庫CPU,將計算轉移到服務層」,併發量大的狀況下,這些功能極可能將數據庫拖死,業務邏輯放到服務層具有更好的擴展性,可以輕易實現「增機器就加性能」。數據庫擅長存儲與索引,CPU計算仍是上移吧

(5)禁止存儲大文件或者大照片
解讀:爲什麼要讓數據庫作它不擅長的事情?大文件和照片存儲在文件系統,數據庫裏存URI多好
 

2、命名規範

(6)只容許使用內網域名,而不是ip鏈接數據庫

(7)線上環境、開發環境、測試環境數據庫內網域名遵循命名規範

業務名稱:xxx
線上環境:dj.xxx.db
開發環境:dj.xxx.rdb
測試環境:dj.xxx.tdb
從庫在名稱後加-s標識,備庫在名稱後加-ss標識
線上從庫:dj.xxx-s.db
線上備庫:dj.xxx-sss.db

(8)庫名、表名、字段名:小寫,下劃線風格,不超過32個字符,必須見名知意,禁止拼音英文混用

(9)表名t_xxx,非惟一索引名idx_xxx,惟一索引名uniq_xxx

3、表設計規範
(10)單實例表數目必須小於500

(11)單表列數目必須小於30

(12)表必須有主鍵,例如自增主鍵
解讀:
a)主鍵遞增,數據行寫入能夠提升插入性能,能夠避免page分裂,減小表碎片提高空間和內存的使用
b)主鍵要選擇較短的數據類型, Innodb引擎普通索引都會保存主鍵的值,較短的數據類型能夠有效的減小索引的磁盤空間,提升索引的緩存效率
c) 無主鍵的表刪除,在row模式的主從架構,會致使備庫夯住

(13)禁止使用外鍵,若是有外鍵完整性約束,須要應用程序控制
解讀:外鍵會致使表與表之間耦合,update與delete操做都會涉及相關聯的表,十分影響sql 的性能,甚至會形成死鎖。高併發狀況下容易形成數據庫性能,大數據高併發業務場景數據庫使用以性能優先
 

4、字段設計規範

(14)必須把字段定義爲NOT NULL而且提供默認值
解讀:
a)null的列使索引/索引統計/值比較都更加複雜,對MySQL來講更難優化
b)null 這種類型MySQL內部須要進行特殊處理,增長數據庫處理記錄的複雜性;同等條件下,表中有較多空字段的時候,數據庫的處理性能會下降不少
c)null值須要更多的存儲空,不管是表仍是索引中每行中的null的列都須要額外的空間來標識
d)對null 的處理時候,只能採用is null或is not null,而不能採用=、in、<、<>、!=、not in這些操做符號。如:where name!=’shenjian’,若是存在name爲null值的記錄,查詢結果就不會包含name爲null值的記錄

(15)禁止使用TEXT、BLOB類型
解讀:會浪費更多的磁盤和內存空間,非必要的大量的大字段查詢會淘汰掉熱數據,致使內存命中率急劇下降,影響數據庫性能

(16)禁止使用小數存儲貨幣
解讀:使用整數吧,小數容易致使錢對不上

(17)必須使用varchar(20)存儲手機號
解讀:
a)涉及到區號或者國家代號,可能出現+-()
b)手機號會去作數學運算麼?
c)varchar能夠支持模糊查詢,例如:like「138%」

(18)禁止使用ENUM,可以使用TINYINT代替
解讀:
a)增長新的ENUM值要作DDL操做
b)ENUM的內部實際存儲就是整數,你覺得本身定義的是字符串?
 

5、索引設計規範
(19)單表索引建議控制在5個之內

(20)單索引字段數不容許超過5個
解讀:字段超過5個時,實際已經起不到有效過濾數據的做用了

(21)禁止在更新十分頻繁、區分度不高的屬性上創建索引
解讀:
a)更新會變動B+樹,更新頻繁的字段創建索引會大大下降數據庫性能
b)「性別」這種區分度不大的屬性,創建索引是沒有什麼意義的,不能有效過濾數據,性能與全表掃描相似

(22)創建組合索引,必須把區分度高的字段放在前面
解讀:可以更加有效的過濾數據
 

6、SQL使用規範

(23)禁止使用SELECT *,只獲取必要的字段,須要顯示說明列屬性
解讀:
a)讀取不須要的列會增長CPU、IO、NET消耗
b)不能有效的利用覆蓋索引
c)使用SELECT *容易在增長或者刪除字段後出現程序BUG

(24)禁止使用INSERT INTO t_xxx VALUES(xxx),必須顯示指定插入的列屬性
解讀:容易在增長或者刪除字段後出現程序BUG

(25)禁止使用屬性隱式轉換
解讀:SELECT uid FROM t_user WHERE phone=13812345678 會致使全表掃描,而不能命中phone索引,猜猜爲何?(這個線上問題不止出現過一次)

(26)禁止在WHERE條件的屬性上使用函數或者表達式
解讀:SELECT uid FROM t_user WHERE from_unixtime(day)>=’2017-02-15′ 會致使全表掃描
正確的寫法是:SELECT uid FROM t_user WHERE day>= unix_timestamp(‘2017-02-15 00:00:00’)

(27)禁止負向查詢,以及%開頭的模糊查詢
解讀:
a)負向查詢條件:NOT、!=、<>、!<、!>、NOT IN、NOT LIKE等,會致使全表掃描
b)%開頭的模糊查詢,會致使全表掃描

(28)禁止大表使用JOIN查詢,禁止大表使用子查詢
解讀:會產生臨時表,消耗較多內存與CPU,極大影響數據庫性能

(29)禁止使用OR條件,必須改成IN查詢
解讀:舊版本mysql的OR查詢是不能命中索引的,即便能命中索引,爲什麼要讓數據庫耗費更多的CPU幫助實施查詢優化呢?

(30)應用程序必須捕獲SQL異常,並有相應處理
 

總結:大數據量高併發的互聯網業務,極大影響數據庫性能的都不讓用,不讓用喲。

如何用0.01元購買一瓶可樂

1.老實辦法
我只有一分錢,可樂三塊錢一瓶。那我就只買1/300瓶好了。
2.拼單分享
我有一分錢,可樂三塊錢,那我找到其餘幾個想喝可樂但沒有三塊/喝不完一瓶的人湊足剩餘的2.99,買到可樂你們分。
3.交易增值
用一分錢換一根針,用一根針換一卷線,用一卷線換一個李子……最終經過交易疊加價值換到可樂。
4.搶佔最後最低價值
在一瓶可樂保質期到的前幾秒買下他。
5.覆蓋邊際成本
花900塊買300瓶雪碧,趁機向老闆提要求加一分錢讓他多送一瓶可樂。
6.尾單掃貨辦法
找到一家產值過剩倒閉的可樂廠,去庫房裏試着買一瓶。
7.誅心輿論辦法
大肆宣揚可樂有毒,等到可樂降價到一分。
8.炒做升值辦法
給手上的一分錢賦予其餘意義,直到它的市場價格超過可樂。
9.臭不要臉辦法
拿着一分錢,死皮賴臉問老闆要不給就在他店門口一哭二鬧三上吊。
10. 分期付款
第一期1分,第二期X元

還要更多有發散性的運營產品套路參考更多:http://www.pmcaff.com/discuss/index/919244833555520

銀盒子基礎交互規範

1  可點擊的按鈕或者連接或者總體圖片等可點擊的區域,鼠標移動上去都用手勢 ,不管是功能按鈕仍是連接等;
2  單選或者複選, 不該該只選擇小圖標的時候才能切換,應該是對應的文字或者區域均可以切換是否選中

spring事務提交的異常處理

當在一個service的類中,當提交事務發生異常時,,企圖使用try{}catch防止前面的保存更新不回滾無效,好比在一個service方法同時有兩個與數據庫打交道的地方:

Order o=new Order();
//do set order  設置order的屬性….

this.orderService.saveOrUpdateOrder(o);//保存order

OrderExtend oe=new OrderExtend();

oe.setJobNum(o.getOrderNum());
//do set OrderExtend  設置OrderExtend的屬性….
/***************如下try企圖保證出異常時不讓order的數據回滾*****/
try {
this.orderExtendService.addOrderExtend(oe);//保存orderextend
} catch (Exception e) {
// TODO: handle exception
}

以上的代碼若是this.orderExtendService.addOrderExtend(oe);提交事務後發生異常,try{}catch並不起做用,order的保存照樣回滾。

那如何實現當OrderExtend 提交事務處問題時,不影響前面的事務呢,假如OrderExtend 的數據相對可有可無?

能夠經過不一樣的線程進行提交事務,至關於事務獨立開來:

/******************分開線程提交事務******************************************/

Order o=new Order();
//do set order  設置order的屬性….

this.orderService.saveOrUpdateOrder(o);//保存order

OrderExtend oe=new OrderExtend();

oe.setJobNum(o.getOrderNum());
//do set OrderExtend  設置OrderExtend的屬性….
/***************如下try企圖保證,出異常不讓order的數據回滾*****/
try {
//使用獨立線程進行orderExtend的保存,確保事務提交失敗不致使前面Order的保存的回滾

new Thread(new HttpUtil().buildRequest(dosaveOrderExtend(), oe, 10000, 10000, 「UTF-8」)).start();
} catch (Exception e) {
// TODO: handle exception
}

 

 

 

 

三步完成阿里巴巴-Druid監控配置

第一步:在數據源配置文件阿里 druid數據庫鏈接池增長監聽過濾參數

代碼:

<!– 配置監控統計攔截的filters,去掉後監控界面sql沒法統計 –>

<beans:property name=「filters」 value=「stat,wall,log4j」 />

<!– 並在filters屬性中配置了log4j –>

<beans:property name=「proxyFilters」>

     <beans:list>

        <beans:ref bean=「stat-filter」 />

         <beans:ref bean=「log-filter」 />

     </beans:list>

</beans:property>

第二步:在web.xml增長Druid監控的Servlet

代碼:

<!– druid web 監控 –>

<servlet>

   <servlet-name>DruidStatView</servlet-name>

      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

      <init-param>

         <!– 用戶名 –>

         <param-name>loginUsername</param-name>

         <param-value>druid</param-value>

      </init-param>

      <init-param>

         <!– 密碼 –>

         <param-name>loginPassword</param-name>

         <param-value>bounter</param-value>

      </init-param>

</servlet>

<servlet-mapping>

   <servlet-name>DruidStatView</servlet-name>

   <url-pattern>/druid/*</url-pattern>

</servlet-mapping>

第三步:重啓項目訪問http://ip:端口/項目名/druid/index.html

如:http://test.blibao.com/sweep/druid/index.html

 

備註:監控內容包括sql監控,URI監控,session監控,Spring監控

Sql監控能夠看到項目裏全部執行的sql語句包括查詢、插入、刪除而且能夠按照執行時間排序方便發現項目內執行的慢sql,同時能夠找到哪些sql語句是經過HQL注入執行的。

URI監控能夠查看項目全部的訪問地址,方便發現哪些請求是高頻發生

Session監控能夠查看本次會話請求次數,方便哪些用戶在惡意訪問

轉載學習

相關文章
相關標籤/搜索