亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

如何使用php實現快錢支付的功能

2020-03-22 17:25:33
字體:
來源:轉載
供稿:網友
本篇文章是對使用php實現快錢支付功能的代碼進行了詳細的分析介紹,需要的朋友參考下

本項目用zend framework框架實現的
modules/default/controllers/IndexController.php
IndexController.php

 ?phphtml' target='_blank'>class IndexController extends Zend_Controller_Action public function init() /* Initialize action controller here */ public function indexAction() /*模擬訂單  *$MockOrder是從數據庫取出來的信息,它包含一些塊錢Request的信息。這里我寫死了。 *orderId訂單號,數據庫表的主鍵(唯一)。 //必要字段 *usr_idtype證件類型,根據自己需要。 *usr_idcode證件號,根據自己需要。 *etx_status是否優惠,根據自己需要。 *time_create驗證是否符合優惠的時間,根據自己需要。 *ets_license套餐代碼如同商品類別,根據自己需要。 *contact_type聯系方式類型,固定選擇值1,2。1電子郵件,2手機號,根據自己需要,塊錢那邊可以為空。 *contact_text聯系方式,根據contact_type來填寫,根據自己需要,塊錢那邊可以為空。 *etsPrice套餐價格及商品價格,根據自己需要。 *orderPrice實際價格,根據自己需要。 *orderAmount訂單實際支付金額,這個要加手續費的。 //必要字段 *orderTime訂單時間。 //必要字段 *paySuccess訂單是否支付成功。 //必要字段 *buySuccess賬號是否生成功,根據自己需要 *payTime訂單支付成功時間。 //必要字段 *總之凡是跟訂單有關的都是必要字段 *orderId、orderAmount、orderTime為 Request所需字段 *paySuccess、payTime為Response所需字段 $MockOrder = array(); $MockOrder[ orderId ] = 100000125 //訂單號。--必要 $MockOrder[ usr_idtype ] = 1 //證件類型,身份證 $MockOrder[ usr_idcode ] = 371111199011111111 //身份證號 $MockOrder[ etx_status ] = 0 //是否優惠,否 $MockOrder[ time_create ] = 1352338189 //驗證是否優惠時間 $MockOrder[ ets_license ] = 1 //套餐代碼及商品類別 $MockOrder[ contact_type ] = 1 //聯系方式類型 1,郵箱 $MockOrder[ contact_text ] = x@163.com //聯系方式,郵箱 $MockOrder[ etsPrice ] = 30800 //套餐價格及商品價格 $MockOrder[ orderPrice ] = 30800 //實際價格 $MockOrder[ orderAmount ] = 31100 //訂單實際支付價格,加手續費的。--必要 $MockOrder[ orderTime ] = 1352338199 //訂單生成時間。--必要 $MockOrder[ paySuccess ] = 0 //訂單是否支付成功。--必要 $MockOrder[ buySuccess ] = 0 //賬號是否生成成功 $MockOrder[ payTime ] = 0 //訂單支付時間。--必要 //BillRequest就是快錢那邊需要的的一些參數 $this- view- BillRequest = new Application_Model_BillRequest($MockOrder); Zend_Debug::dump($this- view- BillRequest);exit;  //bgUrl地址指向這里 public function receiveAction() //receive數據庫設計 /*用$MockReceive數組模擬 * $MockReceive = array(); * $MockReceive[ id ]主鍵; * $MockReceive[ orderId ]商戶訂單號; * $MockReceive[ receiveTime ]接受時間; * $MockReceive[ queryString ]http_build_encode($_REQUEST); * $MockReceive[ dealId ]快錢交易號; * $MockReceive[ bankDealId ]銀行交易號; * $MockReceive[ payResult ]處理結果10:支付成功;11:支付失敗; * $MockReceive[ dealTime ]快錢交易時間; * $MockReceive[ payAmount ]訂單實際支付金額; * $MockReceive[ fee ]費用; * $MockReceive[ errCode ]錯誤代碼; /*$_REQUEST是快錢那邊返回來的數據 * merchantAcctId人民幣賬號,與提交訂單時的塊錢賬號保持一致。 * version網關版本,固定值:v2.0,與提交訂單時的網關版本號保持一致。 * language網頁顯示語言種類,1中文顯示,與提交訂單時的網頁顯示語言種類保持一致 * signType簽名類型,4PKI簽名,與提交訂單時的簽名類型保持一致 * payType支付方式,00全部,與提交訂單時的支付方式保持一致 * bankId銀行代碼 * orderId商戶訂單號,與提交訂單時的商戶訂單號保持一致 * orderTime商戶訂單提交時間,與提交訂單時的商戶訂單提交時間保持一致 * orderAmount商戶訂單金額,與提交訂單時的商戶訂單金額保持一致。 * dealId快錢交易號 * bankDealId銀行交易號 * dealTime快錢交易時間 * payAmount訂單實際支付金額 * fee費用 * ext1擴展字段1,與提交訂單時的擴展字段1保持一致 * ext2擴展字段2,與提交訂單時的擴展字段2保持一致 * payResult處理結果 10:支付成功;11:支付失敗 * errCode錯誤代碼,可為空 * signMsg簽名字符串 $BillResponse = new Application_Model_BillResponse($_REQUEST); //$BillResponse- checkSignMsg驗證簽名字符串是否正確,防止bug漏洞等 if($BillResponse- checkSignMsg){ //判斷訂單支付是否成功 if($BillResponse- isSuccess){ //返回給快錢,快錢會按照redirecturl地址跳到新頁面,這里是成功頁面 return result 1 /result redirecturl http://99bill/default/index/sucess /redirecturl exit; }else{ //返回給快錢,快錢會按照redirecturl地址跳到新頁面,這個是失敗頁面 return result 1 /result redirecturl http://99bill/default/index/fail /redirecturl exit; //返回給快錢,快錢會按照redirecturl地址跳到新頁面,這個是失敗頁面 return result 1 /result redirecturl http://99bill/default/index/fail /redirecturl exit; //redirecturl地址 //成功 public function success() //失敗 public function fail()}

modules/default/views/scripts/index/index.phtml
http://www.99bill.com/gateway/recvMerchantInfoAction.htm

 ?php $BillRequest = (array)$this- BillRequest;?  p >

models/BillRequest.php
BillRequest.php

 ?phpclass Application_Model_BillRequest public function __construct($MockOrder){ * 人民幣網關賬號。 *第一種方式:該賬號為11位人民幣網關商戶編號+01,該參數必填。01對應工商銀行。 *第二種方式:該賬號為16位人民幣網關商戶 $this- merchantAcctId = 1001011111101  //服務器接收支付結果的后臺地址,該參數務必填寫,絕對路徑//不能為空。 $this- bgUrl = http://99bill/default/index/receive  //商戶訂單號,以下采用時間來定義訂單號,商戶可以根據自己訂單號的定義規則來定義該值//不能為空。 $this- orderId = TOLPC .sprintf( %09d , $MockOrder[ orderId  //訂單金額,金額以“分”為單位,商戶測試以1分測試即可,切勿以大金額測試,該參數必填//不能為空 $this- orderAmount =$MockOrder[ orderAmount  //訂單提交時間,格式:yyyyMMddHHmmss,如:20071117020101//不能為空。 $this- orderTime = date( YmdHis , $MockOrder[ orderTime  //支付人姓名,可以為空。 $this- payerName=  //支付人聯系類型,1 代表電子郵件方式;2 代表手機聯系方式??梢詾榭?。 $this- payerContactType =  //支付人聯系方式,與payerContactType設置對應,payerContactType為1,則填寫郵箱地址;payerContactType為2,則填寫手機號碼。可以為空。 $this- payerContact =  //商品名稱,可以為空。 $this- productName= TOLPC  //商品數量,可以為空。 $this- productNum = 1  //商品代碼,可以為空。 $this- productId = $MockOrder[ ets_license  //商品描述,可以為空。 $this- productDesc =  //支付方式,一般為00,代表所有的支付方式。如果是銀行直連商戶,該值為10,必填//不能為空 $this- payType = 00  //編碼方式,1代表 UTF-8; 2 代表 GBK; 3代表 GB2312 默認為1,該參數必填//不能為空 $this- inputCharset = 1  //網關版本,固定值:v2.0,該參數必填//不能為空 $this- version = v2.0  //語言種類,1代表中文顯示,2代表英文顯示。默認為1,該參數必填//不能為空 $this- language = 1  //簽名類型,該值為4,代表PKI加密方式,該參數必填//不能為空 $this- signType = 4  //接收支付結果的頁面地址,該參數一般置為空即可。 $this- pageUrl =  //擴展字段1,商戶可以傳遞自己需要的參數,支付完快錢會原值返回,可以為空。 $this- ext1 = $MockOrder[ orderId  //擴展自段2,商戶可以傳遞自己需要的參數,支付完快錢會原值返回,可以為空。 $this- ext2 = $MockOrder[ orderTime  //銀行代碼,如果payType為00,該值可以為空;如果payType為10,該值必須填寫,具體請參考銀行列表。 $this- bankId =  //同一訂單禁止重復提交標志,實物購物車填1,虛擬產品用0。1代表只能提交一次,0代表在支付不成功情況下可以再提交??蔀榭?。 $this- redoFlag =  //快錢合作伙伴的帳戶號,即商戶編號,可為空。 $this- pid =  //快錢提供的request參數。 $KeyOrders = array( inputCharset , pageUrl , bgUrl , version , language , signType , merchantAcctId , payerName , payerContactType , payerContact , orderId , orderAmount , orderTime , productName , productNum , productId , productDesc , ext1 , ext2 , payType , bankId , redoFlag , pid  //判斷快錢提供的request參數的值是否為空,把非空的參數及值重新組建數組 foreach($KeyOrders as $key){ if( ==$this- {$key}){continue;} $params[$key] = $this- {$key}; //http_build_query()生成URL-encode之后的請求字符串 //urldecode()還原未編碼的字符串 //getSignMsg() PKI加密,也可使用MD5加密 //MD5加密方式 strtoupper(md5(urldecode(http_build_query($params))));這種不常用了。 //常用PKI加密 $this- signMsg = $this- getSignMsg(urldecode(http_build_query($params))); //PKI加密技術 public function getSignMsg($param){ //99bill-rsa.pem是快錢的一個CA證書 //本地隨機生成一個KEY,用此KEY加密數據 KEY為$priv_key_id $priv_key_id = openssl_get_privatekey(file_get_contents( 99bill-rsa.pem , r )); //用$priv_key_id給$param數據加密。 //計算一個簽名字符串$param通過使用SHA1哈希加密,隨后$priv_key_id私鑰加密。數據本身是不加密的。 openssl_sign($param, $signMsg, $priv_key_id, OPENSSL_ALGO_SHA1); //從存儲器上釋放$priv_key_id openssl_free_key($priv_key_id); //使用base64對數據進行編碼 return base64_encode($signMsg);}

models/BillResponse.php
BillResponse.php

 ?phpclass Application_Model_BillResponse * __construct()構造函數 * 生成19個參數及值,可能有一個參數的值為空,$this- errCode的值可能為空 public function __construct($response){ $KeyOrders = array( merchantAcctId , version , language , signType , payType , bankId , orderId , orderTime , orderAmount , dealId , bankDealId , dealTime , payAmount , fee , ext1 , ext2 , payResult , errCode , signMsg  foreach($KeyOrders as $key){ $this- {$key} = $response[$key]; * 檢查簽名字符串 * 快錢返回的簽名字符串是$this- signMsg * 使用base64對前面字符串進行解碼 * 驗證使用快錢給的公鑰驗證 * 快錢那邊他們把返回來的參數值不為空的使用私鑰加密生成了$this- signMsg * 快錢給了我們私鑰對應的公鑰,我們使用這個公鑰來驗證。1成功,0失敗,-1錯誤。 public function checkSignMsg(){ $KeyOrders = array( merchantAcctId , version , language , signType , payType , bankId , orderId , orderTime , orderAmount , dealId , bankDealId , dealTime , payAmount , fee , ext1 , ext2 , payResult , errCode  foreach($KeyOrders as $key){ if( ==$this- {$key}){continue;} $params[$key] = $this- {$key}; //$pub_key_id 公鑰 $pub_key_id = openssl_get_publickey(file_get_contents( 99bill-rsa.cer , r )); return openssl_verify(urldecode(http_build_query($params)), base64_decode($this- signMsg), $pub_key_id);  public function isSuccess(){ //$this- payResult成功時10,失敗時11 return 10 ==$this- payResult; public function getOrderId(){ return str_replace( XXX , , $this- orderId);}

需要一個公鑰和一個私鑰,這個不是一對的
都是一半
99bill-rsa.cer
99bill-rsa.pem

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP使用SWOOLE擴展實現定時同步

zen_cart實現支付前生成訂單的方法

以上就是如何使用php實現快錢支付的功能的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品成人国产乱一区| 亚洲精品成人久久| 永久免费毛片在线播放不卡| 日韩极品精品视频免费观看| 日韩免费中文字幕| 欧美激情a在线| 精品免费在线观看| 日韩av男人的天堂| 在线视频日本亚洲性| 亚洲日韩中文字幕| 亚洲国产精品热久久| 亚洲精品一区在线观看香蕉| 亚洲精品国产精品国自产在线| 欧美一区三区三区高中清蜜桃| 色多多国产成人永久免费网站| 国产91网红主播在线观看| 欧美性xxxxx极品娇小| 欧美精品一区二区三区国产精品| 亚洲精品久久久久久久久久久久久| 亚洲欧美日韩中文在线| 欧美国产日韩一区二区在线观看| 亚洲女同性videos| 欧美洲成人男女午夜视频| 亚洲成人网在线观看| 精品女同一区二区三区在线播放| 欧美怡春院一区二区三区| 欧美日韩国产成人在线| 91在线无精精品一区二区| 最好看的2019年中文视频| 日韩电影中文 亚洲精品乱码| 欧美肥臀大乳一区二区免费视频| 久久久久久国产精品三级玉女聊斋| 久久成人国产精品| 久久九九精品99国产精品| 国产精品高潮在线| 成人国产精品色哟哟| 最近2019中文字幕大全第二页| 国产午夜精品全部视频播放| 日韩av免费看| 久久99久久久久久久噜噜| 九九热精品视频| 中文字幕亚洲欧美日韩高清| 97免费视频在线播放| 欧美极度另类性三渗透| 亚洲精品999| 欧美日韩精品中文字幕| 精品一区二区三区三区| 免费不卡欧美自拍视频| 亚洲成人av在线播放| 亚洲欧美日韩直播| 日韩美女在线播放| www国产亚洲精品久久网站| 国产精品劲爆视频| 日韩在线高清视频| 一道本无吗dⅴd在线播放一区| 中文字幕日韩欧美在线| 日韩精品免费综合视频在线播放| 日韩精品视频在线观看免费| 国产精品午夜国产小视频| 亚洲欧美三级在线| 国产精品一区二区三区在线播放| 亚洲欧美视频在线| 欧美黑人视频一区| 91精品91久久久久久| 色狠狠久久aa北条麻妃| 欧美不卡视频一区发布| 亚洲国产精品久久| 欧美日韩第一视频| 色偷偷91综合久久噜噜| 亚洲欧洲美洲在线综合| 国产免费一区二区三区在线观看| 美女性感视频久久久| 久久99久久久久久久噜噜| 日本不卡高字幕在线2019| 91免费版网站入口| 久久精品精品电影网| 国产伦精品一区二区三区精品视频| 91影视免费在线观看| 日韩一区二区欧美| 青草青草久热精品视频在线观看| 欧美激情亚洲国产| 国产精品美女呻吟| 高清欧美性猛交xxxx黑人猛交| 欧美午夜激情小视频| 国产欧美日韩亚洲精品| 欧美性极品xxxx娇小| 亚洲精选在线观看| 欧美成年人视频网站欧美| 97国产精品免费视频| 日韩美女av在线| 日韩美女视频免费看| 国产欧美最新羞羞视频在线观看| 欧美丰满少妇xxxxx| 高跟丝袜欧美一区| 一区二区三区国产视频| 精品国产区一区二区三区在线观看| 麻豆一区二区在线观看| 欧美性受xxxx黑人猛交| 国产亚洲精品成人av久久ww| 欧美一区深夜视频| 国产色婷婷国产综合在线理论片a| 亚洲qvod图片区电影| 欧美激情精品久久久久久大尺度| 欧美一级大胆视频| 九九热精品视频国产| 国产一区二区在线免费视频| 国产香蕉精品视频一区二区三区| 国产精品三级美女白浆呻吟| 国产91在线播放九色快色| 国产精品久久久久久久久久ktv| 国产精品久久婷婷六月丁香| 亚洲自拍偷拍第一页| 色综合色综合久久综合频道88| 欧美日韩在线第一页| 色综合影院在线| 亚洲激情在线观看视频免费| 78m国产成人精品视频| 97在线观看免费| 亚洲欧美日韩精品久久奇米色影视| 日韩视频在线免费| 亚洲成人教育av| 日韩视频亚洲视频| 精品国产福利视频| 成人黄色免费片| 色www亚洲国产张柏芝| 午夜精品久久久久久久男人的天堂| 欧美激情一区二区久久久| 欧美视频中文在线看| 亚洲人成电影网| 欧美—级高清免费播放| 精品国产拍在线观看| 国产精品久久久久av| 欧美性高跟鞋xxxxhd| 久久久久中文字幕| 欧美猛男性生活免费| 欧美午夜www高清视频| 亚洲男人av电影| 日韩有码片在线观看| 亚洲精品99久久久久中文字幕| 中文字幕在线日韩| 91精品国产99久久久久久| 色多多国产成人永久免费网站| 精品动漫一区二区三区| 在线播放亚洲激情| 亚洲免费视频网站| 一区二区欧美在线| 亚洲男人天堂九九视频| 国产欧美日韩精品专区| 国产在线不卡精品| 欧美精品一区二区三区国产精品| 精品久久久91| 亚洲自拍小视频免费观看| 成人黄色免费片| 国产精品综合网站| 亚洲精品www久久久| 欧美激情亚洲激情| 亚洲一区亚洲二区| 91在线免费网站| 久久久亚洲国产天美传媒修理工| 精品国产一区二区三区四区在线观看| 国产精品网红直播| 日韩欧美亚洲一二三区| 欧美日韩国产激情| 在线一区二区日韩|