《PHP实例:php版银联支付接口开发简明教程》要点:
本文介绍了PHP实例:php版银联支付接口开发简明教程,希望对您有用。如果有疑问,可以联系我们。
PHP应用本文实例讲述了php版银联支付接口开发的方法.分享给大家供大家参考,具体如下:
PHP应用支付接口现在有第三方的支付接口也有银行的支付接口.这里就来介绍php版本银联支付接口开发的方法.
PHP应用银联支付,首先要注意二重要的部分:
PHP应用PHP运行环境是5.4.18以上
PHP应用开了扩展openssl
PHP应用开发手册上面的列子只做参考,因为基本都是错的.你可以试着去官网下一个demo...注意现在银联开发,没有测试密钥提供,只能在正式环境开发
PHP应用下面是我用ThinkPHP编写的一个支付类
- PHP应用
- /**
- * 银联支付 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相关内容感兴趣的读者可查看本站专题:《php常见数据库操作技巧汇总》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》及《php字符串(string)用法总结》
PHP应用希望本文所述对大家PHP程序设计有所帮助.
转载请注明本页网址:
http://www.vephp.com/jiaocheng/3062.html