本文实例讲述了php版银联支付接口开发的方法。分享给大家供大家参考,具体如下:
支付接口现在有第三方的支付接口也有银行的支付接口。这里就来介绍php版本银联支付接口开发的方法。
银联支付,首先要注意二重要的部分:
php运行环境是5.4.18以上
开了扩展openssl
开发手册上面的列子只做参考,因为基本都是错的。你可以试着去官网下一个demo。。。注意现在银联开发,没有测试密钥提供,只能在正式环境开发
下面是我用thinkphp编写的一个支付类
/**
* 银联支付 v0.1
* @auther:summer<dengwz7788@gmail.com>;
* @date:20151202
* **/
class netpayaction extends baseaction{
//在类初始化方法中,引入相关类库
public function _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";
}
public function index()
{
$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 ($paramarray as $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 = new secssutil();
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);
}
}
public function b2cpaysend(){
layout(false);
$settings = new settings_ini();
$settings->oad($this->securitypropfile);
$pay_url = "https://payment.chinapay.com/ctits/service/rest/page/nref/000000000017/0/0/0/0/0";
$html = "<form name='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 ($_session as $k =>$v) {
if (strstr($params, $k)) {
$html .= "<input type='hidden' name = '" . $k . "' value ='" . $v . "'/>";
}
}
$html .= "<nput type='button' type='hidden' value='提交订单' >";
$html .= "<;/from>";
$this->html = $html;
$this->display();
}
public function pgreturn(){
if ($_post) {
if (count($_post) > 0) {
$secssutil = new secssutil();
$securitypropfile = $this>securitypropfile;
$secssutil->init($securitypropfile);
$text = array();
foreach($_post as $key=>$value){
$text[$key] = urldecode($value);
}
if ($secssutil->verify($text)) {
//支付成功
$_session["verify_key"] = "success";
} else {
//支付失败
$_session["verify_key"] = "fail";
}
}
}
}
}
银联支付应该是算比较简单的!!
更多关于php相关内容感兴趣的读者可查看本站专题:《php常见数据库操作技巧汇总》、《php数组(array)操作技巧大全》、《php排序算法总结》、《php常用遍历算法与技巧总结》、《php数据结构与算法教程》、《php程序设计算法总结》、《php数学运算技巧总结》、《php正则表达式用法总结》、《php运算与运算符用法总结》及《php字符串(string)用法总结》
希望本文所述对大家php程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!