银行支付接口 小弟最近在做银行支付接口,由于是与银行直接对接,银行提供的开发文档没有php版本,不知道哪位大神有这方面的开发经验,能提供一些例子让小弟学习一下吗~非常感谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?phpclass Alipay { /** * 输出支付代码 * * @param array $product 订单信息 * @param array $pay 支付信息 * @return string */ function OutCode($product,$pay) { global $INFO; if(!empty($pay['payment_entitie']) and $pay['payment_entitie'] == 1) { $service = 'create_direct_pay_by_user'; } else { $service = 'trade_create_by_buyer'; } $payer = array( 'service' => $service, 'partner' => $pay['payment_friend'], '_input_charset' => 'utf-8', 'return_url' => $INFO['site_url'].'/autocart/cart_payfourthly.php?pay_id='.intval($pay['pay_id'])."'", 'subject' => $product['order_sn'], 'out_trade_no' => $product['order_id'], 'price' => $product['order_amount'], 'quantity' => 1, 'payment_type' => 1, 'logistics_type' => 'EXPRESS', 'logistics_fee' => 0, 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE', 'seller_email' => $pay['payment_user'] ); ksort($payer); reset($payer); $param = ''; $sign = ''; foreach ($payer AS $key => $val) { $param .= "$key=" .urlencode($val). "&"; $sign .= "$key=$val&"; } $param = substr($param, 0, -1); $sign = substr($sign, 0, -1). $pay['payment_key']; $button = '<div style="text-align:center"><input type="button" onclick="window.open(\'https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.md5($sign).'&sign_type=MD5\',\'_self\')" value="马上使用支付宝支付" /></div>'; return $button; } /*** 相应操作* * @return bool*/ function GetDo($pay="") { if(trim($_GET['code']) == 'alipay') { $pay_id = intval($_GET['pay_id']); $payment = $this->GetPayment($pay_id); $order_sn = trim($_GET['out_trade_no']); /* 检查支付的金额是否相符 */ if (!$this->CheckMoney($order_sn, $_GET['total_fee'])) { return false; } /* 检查数字签名是否正确 */ ksort($_GET); reset($_GET); $sign = ''; foreach ($_GET AS $key=>$val) { if ($key != 'sign' && $key != 'sign_type' && $key != 'code') { $sign .= "$key=$val&"; } } $sign = substr($sign, 0, -1) . $payment['alipay_key']; if (md5($sign) != $_GET['sign']) { return false; } if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { /* 改变订单状态 */ $this->OrderPaid($order_sn, 4); //付款中 return true; } elseif ($_GET['trade_status'] == 'TRADE_FINISHED') { /* 改变订单状态 */ $this->OrderPaid($order_sn,1); //已付款,此处未用 return true; } else { return false; } } } function GetPayment($pay_id) { global $DB,$INFO; $Sql = "select * from `{$INFO[DBPrefix]}pay_type` where pay_id='".$pay_id."'"; $query = $DB->query($Sql); $payment = $DB->fetch_array($query); return $payment; } function CheckMoney($order_sn,$total) { global $DB,$INFO; $Sql = "select * from `{$INFO[DBPrefix]}order_table` where order_id='".$order_sn."'"; $query = $DB->query($Sql); $order = $DB->fetch_array($query); if($order['totalprice'] == $total) { return true; } else { return false; } } function OrderPaid($order_sn,$state) { global $DB,$INFO; $Sql = "update {$INFO[DBPrefix]}order_detail` set detail_pay_state='".$state."' where order_id='".$order_sn."' and detail_order_state!=5 and detail_order_state!=0 and detail_order_state!=4"; $query = $DB->query($Sql); if($query) { return true; } return false; }}?> <?phpclass Alipay { /** * 输出支付代码 * * @param array $product 订单信息 * @param array $pay 支付信息 * @return string */ function OutCode($product,$pay) { global $INFO; if(!empty($pay['payment_entitie']) and $pay['payment_entitie'] == 1) { $service = 'create_direct_pay_by_user'; } else { $service = 'trade_create_by_buyer'; } $payer = array( 'service' => $service, 'partner' => $pay['payment_friend'], '_input_charset' => 'utf-8', 'return_url' => $INFO['site_url'].'/autocart/cart_payfourthly.php?pay_id='.intval($pay['pay_id'])."'", 'subject' => $product['order_sn'], 'out_trade_no' => $product['order_id'], 'price' => $product['order_amount'], 'quantity' => 1, 'payment_type' => 1, 'logistics_type' => 'EXPRESS', 'logistics_fee' => 0, 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE', 'seller_email' => $pay['payment_user'] ); ksort($payer); reset($payer); $param = ''; $sign = ''; foreach ($payer AS $key => $val) { $param .= "$key=" .urlencode($val). "&"; $sign .= "$key=$val&"; } $param = substr($param, 0, -1); $sign = substr($sign, 0, -1). $pay['payment_key']; $button = '<div style="text-align:center"><input type="button" onclick="window.open(\'https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.md5($sign).'&sign_type=MD5\',\'_self\')" value="马上使用支付宝支付" /></div>'; return $button; } /*** 相应操作* * @return bool*/ function GetDo($pay="") { if(trim($_GET['code']) == 'alipay') { $pay_id = intval($_GET['pay_id']); $payment = $this->GetPayment($pay_id); $order_sn = trim($_GET['out_trade_no']); /* 检查支付的金额是否相符 */ if (!$this->CheckMoney($order_sn, $_GET['total_fee'])) { return false; } /* 检查数字签名是否正确 */ ksort($_GET); reset($_GET); $sign = ''; foreach ($_GET AS $key=>$val) { if ($key != 'sign' && $key != 'sign_type' && $key != 'code') { $sign .= "$key=$val&"; } } $sign = substr($sign, 0, -1) . $payment['alipay_key']; if (md5($sign) != $_GET['sign']) { return false; } if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS') { /* 改变订单状态 */ $this->OrderPaid($order_sn, 4); //付款中 return true; } elseif ($_GET['trade_status'] == 'TRADE_FINISHED') { /* 改变订单状态 */ $this->OrderPaid($order_sn,1); //已付款,此处未用 return true; } else { return false; } } } function GetPayment($pay_id) { global $DB,$INFO; $Sql = "select * from `{$INFO[DBPrefix]}pay_type` where pay_id='".$pay_id."'"; $query = $DB->query($Sql); $payment = $DB->fetch_array($query); return $payment; } function CheckMoney($order_sn,$total) { global $DB,$INFO; $Sql = "select * from `{$INFO[DBPrefix]}order_table` where order_id='".$order_sn."'"; $query = $DB->query($Sql); $order = $DB->fetch_array($query); if($order['totalprice'] == $total) { return true; } else { return false; } } function OrderPaid($order_sn,$state) { global $DB,$INFO; $Sql = "update {$INFO[DBPrefix]}order_detail` set detail_pay_state='".$state."' where order_id='".$order_sn."' and detail_order_state!=5 and detail_order_state!=0 and detail_order_state!=4"; $query = $DB->query($Sql); if($query) { return true; } return false; }}?> 那你开发的是哪一个银行的,怎么会没有php版本的呢? 关于调用google或百度的搜索引擎 来搜索数据的问题 求救PEAR包问题 使用wordpress做cms php 伪静态与缓存技术的结合 几道简单题,有人会吗? php excel 导出乱码问题 discuz!怎样实现主题列表页显示帖子正文摘要?非预览功能。 怎么用天气API获取国外城市的天气状况 用dede做了一个网站,遇到一个用户权限问题,求助啊 应用程序中发生了无法处理的异常 关于ckeditor的一些问题? 分享一个php开发的飞信..不用验证码
* 输出支付代码
*
* @param array $product 订单信息
* @param array $pay 支付信息
* @return string
*/
function OutCode($product,$pay) {
global $INFO;
if(!empty($pay['payment_entitie']) and $pay['payment_entitie'] == 1) {
$service = 'create_direct_pay_by_user';
} else {
$service = 'trade_create_by_buyer';
}
$payer = array(
'service' => $service,
'partner' => $pay['payment_friend'],
'_input_charset' => 'utf-8',
'return_url' => $INFO['site_url'].'/autocart/cart_payfourthly.php?pay_id='.intval($pay['pay_id'])."'",
'subject' => $product['order_sn'],
'out_trade_no' => $product['order_id'],
'price' => $product['order_amount'],
'quantity' => 1,
'payment_type' => 1,
'logistics_type' => 'EXPRESS',
'logistics_fee' => 0,
'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
'seller_email' => $pay['payment_user']
);
ksort($payer);
reset($payer); $param = '';
$sign = ''; foreach ($payer AS $key => $val)
{
$param .= "$key=" .urlencode($val). "&";
$sign .= "$key=$val&";
} $param = substr($param, 0, -1);
$sign = substr($sign, 0, -1). $pay['payment_key']; $button = '<div style="text-align:center"><input type="button" onclick="window.open(\'https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.md5($sign).'&sign_type=MD5\',\'_self\')" value="马上使用支付宝支付" /></div>'; return $button;
}
/**
* 相应操作
* * @return bool
*/
function GetDo($pay="") {
if(trim($_GET['code']) == 'alipay') {
$pay_id = intval($_GET['pay_id']);
$payment = $this->GetPayment($pay_id);
$order_sn = trim($_GET['out_trade_no']); /* 检查支付的金额是否相符 */
if (!$this->CheckMoney($order_sn, $_GET['total_fee']))
{
return false;
} /* 检查数字签名是否正确 */
ksort($_GET);
reset($_GET); $sign = '';
foreach ($_GET AS $key=>$val)
{
if ($key != 'sign' && $key != 'sign_type' && $key != 'code')
{
$sign .= "$key=$val&";
}
} $sign = substr($sign, 0, -1) . $payment['alipay_key'];
if (md5($sign) != $_GET['sign'])
{
return false;
} if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')
{
/* 改变订单状态 */
$this->OrderPaid($order_sn, 4); //付款中 return true;
}
elseif ($_GET['trade_status'] == 'TRADE_FINISHED')
{
/* 改变订单状态 */
$this->OrderPaid($order_sn,1); //已付款,此处未用 return true;
}
else
{
return false;
}
}
}
function GetPayment($pay_id) {
global $DB,$INFO;
$Sql = "select * from `{$INFO[DBPrefix]}pay_type` where pay_id='".$pay_id."'";
$query = $DB->query($Sql);
$payment = $DB->fetch_array($query);
return $payment;
} function CheckMoney($order_sn,$total) {
global $DB,$INFO;
$Sql = "select * from `{$INFO[DBPrefix]}order_table` where order_id='".$order_sn."'";
$query = $DB->query($Sql);
$order = $DB->fetch_array($query);
if($order['totalprice'] == $total) {
return true;
} else {
return false;
}
}
function OrderPaid($order_sn,$state) {
global $DB,$INFO;
$Sql = "update {$INFO[DBPrefix]}order_detail` set detail_pay_state='".$state."' where order_id='".$order_sn."' and detail_order_state!=5 and detail_order_state!=0 and detail_order_state!=4";
$query = $DB->query($Sql);
if($query) {
return true;
}
return false;
}
}
?>
* 输出支付代码
*
* @param array $product 订单信息
* @param array $pay 支付信息
* @return string
*/
function OutCode($product,$pay) {
global $INFO;
if(!empty($pay['payment_entitie']) and $pay['payment_entitie'] == 1) {
$service = 'create_direct_pay_by_user';
} else {
$service = 'trade_create_by_buyer';
}
$payer = array(
'service' => $service,
'partner' => $pay['payment_friend'],
'_input_charset' => 'utf-8',
'return_url' => $INFO['site_url'].'/autocart/cart_payfourthly.php?pay_id='.intval($pay['pay_id'])."'",
'subject' => $product['order_sn'],
'out_trade_no' => $product['order_id'],
'price' => $product['order_amount'],
'quantity' => 1,
'payment_type' => 1,
'logistics_type' => 'EXPRESS',
'logistics_fee' => 0,
'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
'seller_email' => $pay['payment_user']
);
ksort($payer);
reset($payer); $param = '';
$sign = ''; foreach ($payer AS $key => $val)
{
$param .= "$key=" .urlencode($val). "&";
$sign .= "$key=$val&";
} $param = substr($param, 0, -1);
$sign = substr($sign, 0, -1). $pay['payment_key']; $button = '<div style="text-align:center"><input type="button" onclick="window.open(\'https://www.alipay.com/cooperate/gateway.do?'.$param. '&sign='.md5($sign).'&sign_type=MD5\',\'_self\')" value="马上使用支付宝支付" /></div>'; return $button;
}
/**
* 相应操作
* * @return bool
*/
function GetDo($pay="") {
if(trim($_GET['code']) == 'alipay') {
$pay_id = intval($_GET['pay_id']);
$payment = $this->GetPayment($pay_id);
$order_sn = trim($_GET['out_trade_no']); /* 检查支付的金额是否相符 */
if (!$this->CheckMoney($order_sn, $_GET['total_fee']))
{
return false;
} /* 检查数字签名是否正确 */
ksort($_GET);
reset($_GET); $sign = '';
foreach ($_GET AS $key=>$val)
{
if ($key != 'sign' && $key != 'sign_type' && $key != 'code')
{
$sign .= "$key=$val&";
}
} $sign = substr($sign, 0, -1) . $payment['alipay_key'];
if (md5($sign) != $_GET['sign'])
{
return false;
} if ($_GET['trade_status'] == 'WAIT_SELLER_SEND_GOODS')
{
/* 改变订单状态 */
$this->OrderPaid($order_sn, 4); //付款中 return true;
}
elseif ($_GET['trade_status'] == 'TRADE_FINISHED')
{
/* 改变订单状态 */
$this->OrderPaid($order_sn,1); //已付款,此处未用 return true;
}
else
{
return false;
}
}
}
function GetPayment($pay_id) {
global $DB,$INFO;
$Sql = "select * from `{$INFO[DBPrefix]}pay_type` where pay_id='".$pay_id."'";
$query = $DB->query($Sql);
$payment = $DB->fetch_array($query);
return $payment;
} function CheckMoney($order_sn,$total) {
global $DB,$INFO;
$Sql = "select * from `{$INFO[DBPrefix]}order_table` where order_id='".$order_sn."'";
$query = $DB->query($Sql);
$order = $DB->fetch_array($query);
if($order['totalprice'] == $total) {
return true;
} else {
return false;
}
}
function OrderPaid($order_sn,$state) {
global $DB,$INFO;
$Sql = "update {$INFO[DBPrefix]}order_detail` set detail_pay_state='".$state."' where order_id='".$order_sn."' and detail_order_state!=5 and detail_order_state!=0 and detail_order_state!=4";
$query = $DB->query($Sql);
if($query) {
return true;
}
return false;
}
}
?>