導航:首頁 > 編程語言 > php銀聯支付介面demo

php銀聯支付介面demo

發布時間:2022-05-17 19:20:55

1. 銀聯支付介面 thinkphp怎麼寫

不管是支付寶支付還是網銀支付都得去申請支付介面的。 有相應的文檔,看看挺簡單的。 申請介面需要費用的

2. PHP怎麼做銀聯的支付介面調用

PHP做銀聯支付介面調用問題
//在工商支付介面之前要找到工行提供的介面文件級dll文件
//將訂單簽名數據公鑰加密提供給工行指定頁面
//組織要簽名的數據串
$src="ICBC_PERBANK_B2C1.0.0.0".$infomer["merid"].$infomer["meracct"].$returnaddress."HS".$ddnumber.$amount."0010".$nowtime."0";
$com=new com('ICBCEBANKUTIL.B2CUtil');
$rc=$com->init("c:\WINDOWS\user.crt","c:\WINDOWS\user.crt","c:\WINDOWS\user.key","11111111");
$ssrc=$com->signC($src, strlen($src)); //訂單簽名數據
$rc=$com->verifySignC($src,strlen($src), $ssrc, strlen($ssrc));
$cert=$com->getCert(1); //商城證書公鑰
//將商戶證書存儲到c:\WINDOWS目錄下,然後創建form表單,將指定的數據提交到工行指定的網頁中
<!--支付寶支付的介面操作,提交的數據-->
<td width="100"><a href="<{$link}>"><img src="images/sy_19.gif" width="90" height="25" border="0"></a></td>
<!--——————————————————-->
<!--工行支付的介面操作,提交的數據-->
<form action="https://mybank.icbc.com.cn/" method="post" name="form_bank">
<input name="interfaceName" type="hidden" value="ICBC_PERBANK_B2C"/>
<input name="interfaceVersion" type="hidden" value="1.0.0.0"/>
<input name="orderid" type="hidden" value="<{$ddnumber}>"/>
<input name="amount" type="hidden" value="<{$amount}>"/>
<input name="curType" type="hidden" value="001"/>
<input name="merID" type="hidden" value="<{$merid}>"/>
<input name="merAcct" type="hidden" value="<{$meracct}>"/>
<input name="verifyJoinFlag" type="hidden" value="0"/>
<input name="notifyType" type="hidden" value="HS"/>
<input name="merURL" type="hidden" value="<{$returnaddress}>"/>
<input name="resultType" type="hidden" value="0"/>
<input name="orderDate" type="hidden" value="<{$nowtime}>"/>
<input name="merSignMsg" type="hidden" value="<{$ssrc}>" />
<input name="merCert" type="hidden" value="<{$cert}>" />
</form>

3. 親,php銀聯在線支付,沒做過,請求幫助

支付介面現在有第三方的支付介面也有銀行的支付介面。這里就來介紹php版本銀聯支付介面開發的方法。

銀聯支付,首先要注意二重要的部分:

PHP運行環境是5.4.18以上

開了擴展openssl

開發手冊上面的列子只做參考,因為基本都是錯的。你可以試著去官網下一個demo。。。注意現在銀聯開發,沒有測試密鑰提供,只能在正式環境開發

下面是我用ThinkPHP編寫的一個支付類

/**
*銀聯支付v0.1
*@auther:Summer<[email protected]>;
*@date:20151202
***/
{
//在類初始化方法中,引入相關類庫
publicfunction_initialize(){
header("Content-type:text/html;charset=utf-8");
vendor('Netpay.util.common',"",".php");//導入加密核心文件夾
vendor('Netpay.util.SecssUtil',"",".class.php");//導入加密核心文件夾
vendor('Netpay.util.Settings_INI',"",".php");//導入加密核心文件夾
vendor('Netpay.util.Settings',"",".php");//導入加密核心文件夾
$this->securityPropFile=$_SERVER['DOCUMENT_ROOT']."/ThinkPHP/Extend/Vendor/Netpay/config/security.properties";//誰知道這是啥,反正他們要我加的
$this->b2cPaySend=__APP__."/Index/NetPay/b2cPaySend";
$this->b2cRefundSend=__APP__."/Index/NetPay/b2cRefundSend";
$this->b2cQuerySend=__APP__."/Index/NetPay/b2cQuerySend";
$this->;MerBgUrl=__APP__."/Index/NetPay/MerBgUrl";
$this->MerPageUrl=__APP__."/Index/NetPay/MerPageUrl";
}
publicfunctionindex()
{
$paramArray=array(
'MerId'=>'商戶號',
'MerOrderNo'=>'0000001944663232',
'OrderAmt'=>'1',
'TranDate'=>'20151219',
'TranTime'=>'171248',
'TranType'=>'0001',
'BusiType'=>'0001',
'Version'=>'20140728',
'CurryNo'=>'CNY',
'AccessType'=>;'0',
'CommodityMsg'=>'測試商品1號',
'MerPageUrl'=>$this->MerBgUrl,
'MerBgUrl'=>$this->MerPageUrl,
'MerResv'=>'MerResv',
);
if(count($paramArray)>0){
$dispatchUrl=$this->b2cPaySend;
$transResvedJson=array();
$cardInfoJson=array();
$sendMap=array();
foreach($paramArrayas$key=>$value){
if(isEmpty($value)){
continue;
}
if(startWith($key,"trans_")){
$key=substr($key,strlen("trans_"));
$transResvedJson[$key]=$value;
}else
if(startWith($key,"card_")){
$key=substr($key,strlen("card_"));
$cardInfoJson[$key]=$value;
}else{
$sendMap[$key]=$value;
}
}
$transResvedStr=null;
$cardResvedStr=null;
if(count($transResvedJson)>0){
$transResvedStr=json_encode($transResvedJson);
}
if(count($cardInfoJson)>0){
$cardResvedStr=json_encode($cardInfoJson);
}
$secssUtil=newSecssUtil();
if(!isEmpty($transResvedStr)){
$transResvedStr=$secssUtil->decryptData($transResvedStr);
$sendMap["TranReserved"]=$transResvedStr;
}
if(!isEmpty($cardResvedStr)){
$cardResvedStr=$secssUtil->decryptData($cardResvedStr);
$sendMap["card_"]=$cardResvedStr;
}
$securityPropFile=$this>securityPropFile;
$secssUtil->init($securityPropFile);
$secssUtil->sign($sendMap);
$sendMap["Signature"]=$secssUtil->getSign();
$_SESSION=$sendMap;
header("Location:".$dispatchUrl);
}
}
publicfunctionb2cPaySend(){
layout(false);
$settings=newSettings_INI();
$settings->oad($this->securityPropFile);
$pay_url="https://payment.chinapay.com/CTITS/service/rest/page/nref/000000000017/0/0/0/0/0";
$html="<formname='payment'action='{$pay_url}'method='POST'target='_blank'>;";
$params="TranReserved;MerId;MerOrderNo;OrderAmt;CurryNo;TranDate;SplitMethod;BusiType;MerPageUrl;MerBgUrl;SplitType;MerSplitMsg;PayTimeOut;MerResv;Version;BankInstNo;CommodityMsg;Signature;AccessType;AcqCode;OrderExpiryTime;TranType;RemoteAddr;Referred;TranTime;TimeStamp;CardTranData";
foreach($_SESSIONas$k=>$v){
if(strstr($params,$k)){
$html.="<inputtype='hidden'name='".$k."'value='".$v."'/>";
}
}
$html.="<nputtype='button'type='hidden'value='提交訂單'>";
$html.="<;/from>";
$this->html=$html;
$this->display();
}
publicfunctionpgReturn(){
if($_POST){
if(count($_POST)>0){
$secssUtil=newSecssUtil();
$securityPropFile=$this>securityPropFile;
$secssUtil->init($securityPropFile);
$text=array();
foreach($_POSTas$key=>$value){
$text[$key]=urldecode($value);
}
if($secssUtil->verify($text)){
//支付成功
$_SESSION["VERIFY_KEY"]="success";
}else{
//支付失敗
$_SESSION["VERIFY_KEY"]="fail";
}
}
}
}
}

銀聯支付應該是算比較簡單的!!

4. 中國銀聯在線支付介面php開發怎麼做

對方應該有sdk和demo提供的,支付介面的流程都差不多,包括支付寶,網銀,財付通,paypal等流程都一樣。
1、
用戶下單,收集購物車內產品的總價
2、
拼裝支付參數URL跳轉進入支付網關進行支付(這里會用到支付網關提供的SDK)
3、
支付成功
(1)
支付網關伺服器會非同步發送支付成功的通知到你的「通知URL」,你對過來的參數進行有效性驗證,確保是從支付網關發來的,進行業務邏輯處理,比如設置訂單完成標識等作;
(2)
注意這不是「返回URL」,這一步操作前台支付用戶不會看到。
4、
網關一般在完成支付後,會自動返回我們的網站,進入網站後提示用戶完成支付,並跳轉到相應頁面即可。

5. 求農行支付結果接收的php范常式序(參考農行網上支付平台-B2C介面編程指南demo/MerchantResult.jsp

求農行支付結果接收的php范常式序(參考農行網上支付平台-b2c介面編程指南demo/merchantresult.jsp
我給你推薦一個 星辰傳奇sf支付平台 你去看下 信譽很不錯,口碑也很好,
星辰傳奇sf支付平台6大推薦理由!
推薦1:大企業有正規的增值業務許可證,小平台一般辦不到這類證的.
推薦2:有固定電話,方便聯系。避免了跑路現象.
推薦3:卡類傭金國內同行業第一。直接與各大公司簽訂協議免除中間收費渠道
推薦4:結算一律免手續費,免費給予手機簡訊通知。
推薦5:客服服務態度特好。
推薦6:永不黑單,反正我用了三個月了沒發現黑單情況。

兄弟你去看看星辰傳奇sf支付平台人家比較正規,我用了三個多月了,沒發現人家星辰傳奇sf支付平台有黑單情況!結算也滿及時的,沒拖延過!

星辰傳奇sf支付平台優勢
第三方電子支付平台是屬於第三方的服務中介機構,完成第三方擔保支付的功能 支付平台
。它主要是面向開展電子商務業務的企支付平台業提供電子商務基礎支撐與應用支撐服務,不直接從事具體的電子商務活動。第三方支付平台獨立與銀行,網站以及商家來做職能清晰的支付。並且第三方支付平台還具有以下優勢: (1)第三方支付平台作為中介方,可以促成商家和銀行的合作。對於商家第三方支付平台可以降低企業運營成本,同時對於銀行,可以直接利用第三方的服務系統提供服務,幫助銀行節省網關開發成本。 (2)第三方支付服務系統有助於打破銀行卡壁壘。由於目前我國實現在線支付的銀行卡各自為陣,每個銀行都有自己的銀行卡,這些自成體系的銀行卡紛紛與網站聯盟推出在線支付業務,客觀上造成消費者要自由地完成網上購物,手裡面必須有十幾張卡。同時商家網站也必須裝有各個銀行的認證軟體, 這樣就會制約網上支付業務的發展。第三方支付服務系統可以很好地解決這個問題。 (3)第三方支付平台能夠提供增值服務,幫助商家網站解決實時交易查詢和交易系統分析,提供方便及時的退款和止付服務。

目前中國國內的第三方支付產品主要有PayPal(易趣公司產品)、支付寶(阿里巴巴旗下)、財付通(騰訊公司,騰訊拍拍)、易寶支付(Yeepay)、快錢(99bill)、百付寶(網路C2C)、網易寶(網易旗下),環迅支付,匯付天下,其中最用戶數量最大的是PayPal和支付寶,前者主要在歐美國家流行,後者是馬雲阿里巴巴旗下產品,據稱,截止2009年7月,支付寶用戶超過2億。 另外中國銀聯旗下銀聯電子支付也開始發力第三方支付,其實力不容小視。 PayPal支付基本原理 通過PayPal支付一筆金額給商家或者收款人,可以分為以下幾個步驟: 1、只要有一個電子郵件地址,付款人就可以登錄開設PayPal帳戶,通過驗證成為其用戶,並提供信用卡或者相關銀行資料,增加帳戶金額,將一定數額的款項從其開戶時登記的帳戶(例如信用卡)轉移至PayPal帳戶下。 2、當付款人啟動向第三人付款程序時,必須先進入PayPal帳戶,指定特定的匯出金額,並提供受款人的電子郵件帳號給PayPal。 3、接著PayPal向商家或者收款人發出電子郵件,通知其有等待領取或轉帳的款項。 4、如商家或者收款人也是PayPal用戶,其決定接受後,付款人所指定之款項即移轉予收款人。星辰支付。用心服務,相信品牌的力量。JI

6. 如何利用PHP語言開發平台第三方支付介面

第一步:簽訂合約通過第三方拿到介面(可以郵件形式發送、也可以在第三方系統下載),拿到介面後,要確認下介面類型,是否是自己需要的介面,比如B2C介面、B2B介面等類型。
第二步:支付介面分很多語言版本,比如ASP、JSP、PHP、.NET語言版本,所以要選擇與自己網站語言匹配的介面進行安裝。商城網站的技術一般比較清楚商城的開發語言。
第三步:拿到的支付介面一般包括介面文檔和介面代碼示例,選擇合適的介面代碼示例,進行聯調,比如自己網站是PHP開發的,就選擇PHP代碼示例聯調。
第四步:介面聯調的時候,需要第三方支付提供聯調測試賬號,方可以聯調。聯調除了需要聯調賬號除外,還需要該賬號的支付密鑰,聯調過程中,有什麼問題,可以直接找第三方支付技術支持給予協調處理。
第五步:介面聯調通過後,可先換成生產環境賬號,進行交易測試,測試沒問題後,可以放到商城網站進行交易。

7. 怎麼申請銀聯在線支付介面

1、五證齊全:營業執照、稅務登記證(國地稅兩證)、組織機構代碼證、銀行開戶許可證。

2、ICP備案:公司網站進行ICP備案。這個應該不是問題。上面兩項通過之後基本上銀行會和公司來進行協議蓋章了,也算是合同,就說明已經生效了。

3、簽訂完合同蓋完章後基本上就會給商戶下發介面文件,介面文件有多種語言,asp,java,.net等根據自己網站語言需要來索要即可。

4、測試開通可以找相關介面開發人員及進行介面整合對接到公司網站上面即可進行交易了。

(7)php銀聯支付介面demo擴展閱讀

異常應答說明

1、不返回報文體的情況:

版本號,交易類型、子類,簽名方法,簽名值等關鍵域未上送,返回「Invalid request.」; 交易類型和請求地址校驗有誤,返回「Invalid request URI.」

2、返回全部的請求報文,附加應答碼和應答描述(包括的應答碼有:01、02、03、10、11、32):

驗證簽名失敗;

報文格式錯(包含,必填域缺失,上送銀聯報文未定義的域,報文域的格式非法,交易時間超出范圍);

簽名失敗;超時等其他系統異常

8. 求php銀聯支付簡單demo(unionpay)

<?php
namespace common\services;
class UnionPay
{
/**
* 支付配置
* @var array
*/
public $config = [];
/**
* 支付參數,提交到銀聯對應介面的所有參數
* @var array
*/
public $params = [];
/**
* 自動提交表單模板
* @var string
*/
private $formTemplate = <<<'HTML'
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>支付</title>
</head>
<body>
<div style="text-align:center">跳轉中...</div>
<form id="pay_form" name="pay_form" action="%s" method="post">
%s
</form>
<script type="text/javascript">
document.onreadystatechange = function(){
if(document.readyState == "complete") {
document.pay_form.submit();
}
};
</script>
</body>
</html>
HTML;
/**
* 構建自動提交HTML表單
* @return string
*/
public function createPostForm()
{
$this->params['signature'] = $this->sign();
$input = '';
foreach($this->params as $key => $item) {
$input .= "\t\t<input type=\"hidden\" name=\"{$key}\" value=\"{$item}\">\n";
}
return sprintf($this->formTemplate, $this->config['frontUrl'], $input);
}
/**
* 驗證簽名
* 驗簽規則:
* 除signature域之外的所有項目都必須參加驗簽
* 根據key值按照字典排序,然後用&拼接key=value形式待驗簽字元串;
* 然後對待驗簽字元串使用sha1演算法做摘要;
* 用銀聯公鑰對摘要和簽名信息做驗簽操作
*
* @throws \Exception
* @return bool
*/
public function verifySign()
{
$publicKey = $this->getVerifyPublicKey();
$verifyArr = $this->filterBeforSign();
ksort($verifyArr);
$verifyStr = $this->arrayToString($verifyArr);
$verifySha1 = sha1($verifyStr);
$signature = base64_decode($this->params['signature']);
$result = openssl_verify($verifySha1, $signature, $publicKey);
if($result === -1) {
throw new \Exception('Verify Error:'.openssl_error_string());
}
return $result === 1 ? true : false;
}
/**
* 取簽名證書ID(SN)
* @return string
*/
public function getSignCertId()
{
return $this->getCertIdPfx($this->config['signCertPath']);
}
/**
* 簽名數據
* 簽名規則:
* 除signature域之外的所有項目都必須參加簽名
* 根據key值按照字典排序,然後用&拼接key=value形式待簽名字元串;
* 然後對待簽名字元串使用sha1演算法做摘要;
* 用銀聯頒發的私鑰對摘要做RSA簽名操作
* 簽名結果用base64編碼後放在signature域
*
* @throws \InvalidArgumentException
* @return multitype|string
*/
private function sign() {
$signData = $this->filterBeforSign();
ksort($signData);
$signQueryString = $this->arrayToString($signData);
if($this->params['signMethod'] == 01) {
//簽名之前先用sha1處理
//echo $signQueryString;exit;
$datasha1 = sha1($signQueryString);
$signed = $this->rsaSign($datasha1);
} else {
throw new \InvalidArgumentException('Nonsupport Sign Method');
}
return $signed;
}
/**
* 數組轉換成字元串
* @param array $arr
* @return string
*/
private function arrayToString($arr)
{
$str = '';
foreach($arr as $key => $value) {
$str .= $key.'='.$value.'&';
}
return substr($str, 0, strlen($str) - 1);
}
/**
* 過濾待簽名數據
* signature域不參加簽名
*
* @return array
*/
private function filterBeforSign()
{
$tmp = $this->params;
unset($tmp['signature']);
return $tmp;
}
/**
* RSA簽名數據,並base64編碼
* @param string $data 待簽名數據
* @return mixed
*/
private function rsaSign($data)
{
$privatekey = $this->getSignPrivateKey();
$result = openssl_sign($data, $signature, $privatekey);
if($result) {
return base64_encode($signature);
}
return false;
}
/**
* 取.pfx格式證書ID(SN)
* @return string
*/
private function getCertIdPfx($path)
{
$pkcs12certdata = file_get_contents($path);
openssl_pkcs12_read($pkcs12certdata, $certs, $this->config['signCertPwd']);
$x509data = $certs['cert'];
openssl_x509_read($x509data);
$certdata = openssl_x509_parse($x509data);
return $certdata['serialNumber'];
}
/**
* 取.cer格式證書ID(SN)
* @return string
*/
private function getCertIdCer($path)
{
$x509data = file_get_contents($path);
openssl_x509_read($x509data);
$certdata = openssl_x509_parse($x509data);
return $certdata['serialNumber'];
}
/**
* 取簽名證書私鑰
* @return resource
*/
private function getSignPrivateKey()
{
$pkcs12 = file_get_contents($this->config['signCertPath']);
openssl_pkcs12_read($pkcs12, $certs, $this->config['signCertPwd']);
return $certs['pkey'];
}
/**
* 取驗證簽名證書
* @throws \InvalidArgumentException
* @return string
*/
private function getVerifyPublicKey()
{
//先判斷配置的驗簽證書是否銀聯返回指定的證書是否一致
if($this->getCertIdCer($this->config['verifyCertPath']) != $this->params['certId']) {
throw new \InvalidArgumentException('Verify sign cert is incorrect');
}
return file_get_contents($this->config['verifyCertPath']);
}
}

//銀聯支付設置
'unionpay' => [
//測試環境參數
'frontUrl' => 'https://101.231.204.80:5000/gateway/api/frontTransReq.do', //前台交易請求地址
//'singleQueryUrl' => 'https://101.231.204.80:5000/gateway/api/queryTrans.do', //單筆查詢請求地址
'signCertPath' => __DIR__.'/../keys/unionpay/test/sign/700000000000001_acp.pfx', //簽名證書路徑
'signCertPwd' => '000000', //簽名證書密碼
'verifyCertPath' => __DIR__.'/../keys/unionpay/test/verify/verify_sign_acp.cer', //驗簽證書路徑
'merId' => 'xxxxxxx',
//正式環境參數
//'frontUrl' => 'https://101.231.204.80:5000/gateway/api/frontTransReq.do', //前台交易請求地址
//'singleQueryUrl' => 'https://101.231.204.80:5000/gateway/api/queryTrans.do', //單筆查詢請求地址
//'signCertPath' => __DIR__.'/../keys/unionpay/test/sign/PM_700000000000001_acp.pfx', //簽名證書路徑
//'signCertPwd' => '000000', //簽名證書密碼
//'verifyCertPath' => __DIR__.'/../keys/unionpay/test/verify/verify_sign_acp.cer', //驗簽證書路徑
//'merId' => 'xxxxxxxxx', //商戶代碼
],

9. php 銀聯網站支付介面開發估計多少錢

1500塊,也可以接

10. php做銀聯介面(upop)前台操作一切順利,只是後台該如何接收數據,是否還要核對報文,還是是直接處理。

你是做銀聯介面還是用銀聯介面開發程序
一般銀聯會有兩種返回方式

一直是直接postback 另一種是非同步的 可能不是立即傳回 比如每5分鍾把所有訂單傳回來一次
這種方式是為了防止用戶付款完畢沒有等待頁面彈到postback頁面就關閉瀏覽器或者當前頁面了

一般在postback頁面接受銀聯返回數據做處理數據以銀聯返回的為准 存到自己系統的資料庫的另一張表 再check數據 然後更新訂單狀態等 執行其他操作

非同步方式傳回來的再進行一次檢查 補全關閉瀏覽器等原因導致的特殊情況而沒有得到返回的訂單
可以對已經保存的訂單再次檢查 執行過程和之前基本一樣

銀聯一般還會提供一個訂單查詢介面 根據交易訂單號 提交到銀聯的介面得到返回 比如返回xml數據
通過返回結果可以再次確認訂單詳細信息 這個查詢的結果是可以做銀聯對賬的憑據的如果他們返回的信息錯了他們是有責任的.在自己的系統內給客戶做關鍵操作之前最好查詢核對一次..

詳細的方法請仔細看銀聯提供的文檔..

閱讀全文

與php銀聯支付介面demo相關的資料

熱點內容
emerson伺服器怎麼短接啟動 瀏覽:559
工控編程人員工資 瀏覽:397
速成義大利語pdf 瀏覽:250
連續加減乘除法的演算法 瀏覽:652
用mfc編程實現dda演算法 瀏覽:41
linux命令打開應用 瀏覽:146
改造後的程序員 瀏覽:270
數控編程變數 瀏覽:785
江門哪裡有plc編程系統 瀏覽:378
安卓手機如何下載外服b站 瀏覽:700
pythonetree庫 瀏覽:759
數據插值演算法 瀏覽:723
澳大利亞加密貨幣逃稅 瀏覽:484
pdf文檔如何壓縮 瀏覽:329
java單例模式線程安全 瀏覽:646
特種pdf 瀏覽:160
加油什麼app劃算 瀏覽:715
開服要什麼樣的伺服器 瀏覽:33
pdf文件太大怎麼壓縮 瀏覽:29
UK開票顯示文件夾不存在 瀏覽:668