public function cx($conf) { $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '00', 'txnSubType' => '00', 'bizType' => '000000', 'accessType' => '0', 'channelType' => '07', 'orderId' => $conf['ordernumber'], 'merId' => '898110248160161', 'txnTime' => date("YmdHis", strtotime($conf['addtime']))); // 签名 sign($params); // 发送信息到后台 $result = sendHttpRequest($params, SDK_SINGLE_QUERY_URL); //返回结果展示 $result_arr = coverStringToArray($result); $insert = array(); $insert['ordernumber'] = $conf['ordernumber']; $insert['fqtime'] = $conf['addtime']; $insert['ylnumber'] = isset($result_arr['queryId']) ? $result_arr['queryId'] : 0; $insert['yltime'] = isset($result_arr['traceTime']) ? $result_arr['traceTime'] : 0; $insert['ylstatus'] = $conf['cztype']; $insert['cxtime'] = date("Y-m-d H:i:s"); $insert['cxstatus'] = $result_arr['respCode']; $insert['cxmiaosu'] = $result_arr['respMsg']; $insert['userId'] = $conf['userId']; $insert['origRespCode'] = isset($result_arr['origRespCode']) ? $result_arr['origRespCode'] : 0; $insert['origRespMsg'] = isset($result_arr['origRespMsg']) ? $result_arr['origRespMsg'] : 0; $this->db->insert("yinlian", $insert); if ($this->db->insert_id() > 0) { $this->db->query("update `cz` set `cl`=1 where logId=" . $conf['logId']); } }
public function dopay($money = null, $order = null, $ordername = null, $reqReserved = '透传信息') { //取插件配置参数 $conf = F('pluginunionpay'); if (empty($conf) || APP_DEBUG) { $data = M('Addons')->field('param')->where("mark='Unionpay'")->find(); $conf = json_decode($data['param'], true); F('pluginunionpay', $conf); } define('UNIONPAY_MEMBER_ID', $conf['MEMBER_ID']); include_once UNIONPAY_PATH . '/lib/utf8/func/SDKConfig.php'; include_once UNIONPAY_PATH . '/lib/utf8/func/common.php'; include_once UNIONPAY_PATH . '/lib/utf8/func/PinBlock.php'; include_once UNIONPAY_PATH . '/lib/utf8/func/PublicEncrypte.php'; include_once UNIONPAY_PATH . '/lib/utf8/func/secureUtil.php'; include_once UNIONPAY_PATH . '/lib/utf8/func/httpClient.php'; /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 //$log = new PhpLog ( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); //$log->LogInfo ( "============处理前台请求开始===============" ); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => MEMBER_ID, 'orderId' => $order, 'txnTime' => date('YmdHis'), 'txnAmt' => $money * 100, 'currencyCode' => '156', 'orderDesc' => $ordername, 'reqReserved' => $reqReserved); // 签名 sign($params); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $html_form = create_html($params, $front_uri); return $html_form; }
function __construct($config) { $this->params["certId"] = getSignCertId(); $this->params["txnTime"] = date('YmdHis'); $this->params["frontUrl"] = $config['return_url']; $this->params["backUrl"] = $config["notify_url"]; $this->request_url = $config["request_uri"]; }
public function actionPay($order_code) { $is_login = Yii::app()->session['is_login']; $uid = Yii::app()->session['uid']; $username = Yii::app()->session['username']; if (!isset($is_login) && !isset($uid) && empty($username) && $is_login != 1) { $this->redirect($this->createUrl('user/login')); } $orders = Orders::model()->find('uid=:uid and order_code=:order_code', array(':uid' => $uid, ':order_code' => $order_code)); if (empty($order_code) || empty($orders)) { throw new CHttpException(400, Yii::t('yii', 'Your request is invalid.')); } $pay_price = (int) ($orders->total_price * 100); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => '898110279910126', 'orderId' => $orders->order_code, 'txnTime' => date('YmdHis'), 'txnAmt' => $pay_price, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => $orders->goods_name); sign($params); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); echo $html_form; exit; }
public function pay() { $merId = empty($this->merId) ? MER_ID : $this->merId; $orderId = empty($this->orderId) ? date('YmdHis') : $this->orderId; $frontUrl = empty($this->frontUrl) ? SDK_FRONT_NOTIFY_URL : $this->frontUrl; $backUrl = empty($this->backUrl) ? SDK_BACK_NOTIFY_URL : $this->backUrl; // 初始化日志 $log = new \PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => $frontUrl, 'backUrl' => $backUrl, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => $merId, 'orderId' => $orderId, 'txnTime' => date('YmdHis'), 'txnAmt' => $this->txnAmt, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => $this->reqReserved); // 签名 sign($params); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); $log->LogInfo("-------前台交易自动提交表单>--begin----"); //$log->LogInfo ( $html_form ); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); echo $html_form; }
<?php define('UNIONPAY_PATH', dirname(__FILE__)); include_once UNIONPAY_PATH . '/lib/common.php'; include_once UNIONPAY_PATH . '/lib/SDKConfig.php'; include_once UNIONPAY_PATH . '/lib/secureUtil.php'; include_once UNIONPAY_PATH . '/lib/httpClient.php'; include_once UNIONPAY_PATH . '/lib/log.class.php'; //PageRetUrl 返回支付后的商户网站页面 $pagereturl = $_GET['front_url']; /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => '826340173990002', 'orderId' => date('Y') . time(), 'txnTime' => date('YmdHis'), 'txnAmt' => 1, 'currencyCode' => '156'); // 签名 sign($params); /*手机WAP支付方式*/ // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); $log->LogInfo("-------前台交易自动提交表单>--begin----"); $log->LogInfo($html_form); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); echo $html_form;
require ROOT . '/classes/datamgr/order.cls.php'; include_once ROOT . '/libs/unionpay/utf8/func/common.php'; /** * 重要:联调测试时请仔细阅读注释! * * 产品:跳转网关支付产品<br> * 交易:消费:前台跳转,有前台通知应答和后台通知应答<br> * 日期: 2015-09<br> * 版本: 1.0.0 * 版权: 中国银联<br> * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障<br> * 提示:该接口参考文档位置:open.unionpay.com帮助中心 下载 产品接口规范 《网关支付产品接口规范》,<br> * 《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)<br> * 《全渠道平台接入接口规范 第3部分 文件接口》(对账文件格式说明)<br> * 测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案: * 调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案 * 测试过程中产生的6位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案 * 2) 咨询在线人工支持: open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。 * 交易说明:1)以后台通知或交易状态查询交易确定交易成功,前台通知不能作为判断成功的标准. * 2)交易状态查询交易(Form_6_5_Query)建议调用机制:前台类交易建议间隔(5分、10分、30分、60分、120分)发起交易查询,如果查询到结果成功,则不用再查询。(失败,处理中,查询不到订单均可能为中间状态)。也可以建议商户使用payTimeout(支付超时时间),过了这个时间点查询,得到的结果为最终结果。 */ $order_no = $_REQUEST["order_no"]; $info = $orderMgr->getOrderByOrderNo($order_no); $time = date("YmdHis"); $price = $info["price"] * 100; $price = 1; $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'currencyCode' => '156', 'merId' => "898111448161560", 'orderId' => $info["order_no"], 'txnTime' => $time, 'txnAmt' => $price); sign($params); $uri = SDK_FRONT_TRANS_URL; $html_form = create_html($params, $uri); echo $html_form;
* 版权: 中国银联<br> * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能及规范性等方面的保障<br> * 该接口参考文档位置:open.unionpay.com帮助中心 下载 产品接口规范 《网关支付产品接口规范》,<br> * 《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)<br> * 测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案: * 调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案 * 测试过程中产生的6位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案 * 2) 咨询在线人工支持: open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。 * 交易说明: 1)对前台交易发起交易状态查询:前台类交易建议间隔(5分、10分、30分、60分、120分)发起交易查询,如果查询到结果成功,则不用再查询。(失败,处理中,查询不到订单均可能为中间状态)。也可以建议商户使用payTimeout(支付超时时间),过了这个时间点查询,得到的结果为最终结果。 * 2)对后台交易发起交易状态查询:后台类资金类交易同步返回00,成功银联有后台通知,商户也可以发起 查询交易,可查询N次(不超过6次),每次时间间隔2N秒发起,即间隔1,2,4,8,16,32S查询(查询到03,04,05继续查询,否则终止查询)。 * 后台类资金类同步返03 04 05响应码及未得到银联响应(读超时)需发起查询交易,可查询N次(不超过6次),每次时间间隔2N秒发起,即间隔1,2,4,8,16,32S查询(查询到03,04,05继续查询,否则终止查询)。 */ $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); // 初始化日志 $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '00', 'txnSubType' => '00', 'bizType' => '000000', 'accessType' => '0', 'channelType' => '07', 'orderId' => $_POST["orderId"], 'merId' => $_POST["merId"], 'txnTime' => $_POST["txnTime"]); sign($params); // 签名 $url = SDK_SINGLE_QUERY_URL; $log->LogInfo("后台请求地址为>" . $url); $result = post($params, $url, $errMsg); if (!$result) { //没收到200应答的情况 printResult($url, $params, ""); echo "POST请求失败:" . $errMsg; return; } $log->LogInfo("后台返回结果为>" . $result); $result_arr = convertStringToArray($result); printResult($url, $params, $result); //页面打印请求应答数据
<?php header('Content-type:text/html;charset=utf-8'); define('UNIONPAY_PATH', dirname(__FILE__)); include_once UNIONPAY_PATH . '/lib/common.php'; include_once UNIONPAY_PATH . '/lib/SDKConfig.php'; include_once UNIONPAY_PATH . '/lib/secureUtil.php'; include_once UNIONPAY_PATH . '/lib/httpClient.php'; include_once UNIONPAY_PATH . '/lib/log.class.php'; // 初始化日志 // $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '00', 'txnSubType' => '00', 'bizType' => '000201', 'accessType' => '0', 'channelType' => '08', 'orderId' => '20151443081599', 'merId' => '826340173990002', 'txnTime' => '20150924160056'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_SINGLE_QUERY_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_SINGLE_QUERY_URL); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败';
<?php //header ( 'Content-type:text/html;charset=utf-8' ); require_once './config_wap.php'; //银联wap配置文件 $payment_notice_id = intval($_REQUEST['payment_notice_id']); $payment_notice = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "payment_notice where id = " . $payment_notice_id); $money = round($payment_notice['money'], 2) * 100; $payment_info = $GLOBALS['db']->getRow("select id,config,logo from " . DB_PREFIX . "payment where id=" . intval($payment_notice['payment_id'])); $payment_info['config'] = unserialize($payment_info['config']); $parameter = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => $payment_info['config']['merId'], 'orderId' => $payment_notice['notice_sn'], 'txnTime' => to_date($payment_notice['create_time'], 'YmdHis'), 'txnAmt' => $money, 'currencyCode' => '156', 'reqReserved' => $payment_notice_id); //签名 sign($parameter); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $payLinks = create_html($parameter, $front_uri); /** $log = new PhpLog ( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); $log->LogInfo ( "前台请求地址为>" . $front_uri ); $log->LogInfo ( "-------前台交易自动提交表单>--begin----" ); $log->LogInfo ( $payLinks ); $log->LogInfo ( "-------前台交易自动提交表单>--end-------" ); $log->LogInfo ( "============处理前台请求 结束===========" ); */ header('Content-type:text/html;charset=utf-8'); echo $payLinks;
<?php header('Content-type:text/html;charset=utf-8'); include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/common.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/SDKConfig.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/secureUtil.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/httpClient.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/log.class.php'; /** * 预授权完成 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '03', 'txnSubType' => '00', 'bizType' => '000201', 'accessType' => '0', 'channelType' => '07', 'orderId' => date('YmdHis'), 'merId' => '888888888888888', 'origQryId' => '201502281110005523968', 'txnTime' => date('YmdHis'), 'txnAmt' => '100', 'backUrl' => SDK_BACK_NOTIFY_URL, 'reqReserved' => ' 透传信息'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_BACK_TRANS_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_BACK_TRANS_URL); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败'; ?>
if(cus[i].checked) pwd.value+=cus[i].checked?cus[i].value+' ':''; } } } </script> </head> <body> <form action="BackReceive.php" method="post"> <table width="900px" border="1" align="center"> <tr><td align="left" colspan="2" >发送请求</td></tr> <tr><td width="30%">版本号</td><td><input type="text" name="flags[version]" value="5.0.0"/></td></tr> <tr><td width="30%">编码方式</td><td><input type="text" name="flags[encoding]" value="GBK"/></td></tr> <tr><td width="30%">证书ID</td><td> <input type="text" name="flags[certId]" value="<?=getSignCertId()?>"/></td></tr> <tr><td width="30%">签名域</td><td><input type="text" name="flags[signature]" value=""/></td></tr> <tr><td width="30%">签名方法</td><td><input type="text" name="flags[signMethod]" value=""/></td></tr> <tr><td width="30%">交易类型</td><td><input type="text" name="flags[txnType]" value=""/></td></tr> <tr><td width="30%">交易子类</td><td><input type="text" name="flags[txnSubType]" value=""/></td></tr> <tr><td width="30%">产品类型</td><td><input type="text" name="flags[bizType]" value=""/></td></tr> <tr><td width="30%">渠道类型</td><td><input type="text" name="flags[channelType]" value=""/></td></tr> <tr><td width="30%" >持卡人是否加密信息<td> <input type="checkbox" name="arr[SDK_PAN_ENC]" value="" checked="true"/>密码 <input type="checkbox" name="arr[SDK_CVN2_ENC]" value="" checked="true"/>CVN2 <input type="checkbox" name="arr[SDK_DATE_ENC]" value="" checked="true"/>有效期</td></tr> <tr><td width="30%">前台地址</td><td><input type="text" name="flags[frontUrl]" value=""/></td></tr> <tr><td width="30%">后台地址</td><td><input type="text" name="flags[backUrl]" value=""/></td></tr> <tr><td width="30%">接入类型</td><td><input type="text" name="flags[accessType]" value=""/></td></tr> <tr><td width="30%">商户ID</td><td><input type="text" name="flags[merId]" value="898340183980105"/></td></tr> <tr><td width="30%">商户订单号</td><td><input type="text" name="flags[orderId]" value=""/></td></tr>
header('Content-type:text/html;charset=utf-8'); include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/common.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/SDKConfig.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/secureUtil.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/httpClient.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/log.class.php'; /** * 预授权-控件 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '02', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => '888888888888888', 'orderId' => date('YmdHis'), 'txnTime' => date('YmdHis'), 'txnAmt' => '100', 'currencyCode' => '156', 'orderDesc' => '订单描述', 'reqReserved' => ' 透传信息'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_App_Request_Url); // 发送信息到后台 $result = sendHttpRequest($params, SDK_App_Request_Url); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败'; ?>
/** * 签名 * @param req 请求要素 * @param resp 应答要素 * @return 是否成功 */ static function sign(&$params, $cert_path = SDK_SIGN_CERT_PATH, $cert_pwd = SDK_SIGN_CERT_PWD) { $params['certId'] = getSignCertId($cert_path, $cert_pwd); //证书ID sign($params, $cert_path, $cert_pwd); }
* 版本: 1.0.0 * 版权: 中国银联<br> * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障<br> * 该接口参考文档位置:open.unionpay.com帮助中心 下载 产品接口规范 《网关支付产品接口规范》<br> * 《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)<br> * 测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案: * 调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案 * 测试过程中产生的6位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案 * 2) 咨询在线人工支持: open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。 * 交易说明:1)以后台通知或交易状态查询交易(Form_6_5_Query)确定交易成功。建议发起查询交易的机制:可查询N次(不超过6次),每次时间间隔2N秒发起,即间隔1,2,4,8,16,32S查询(查询到03,04,05继续查询,否则终止查询) * 2)预授权完成交易必须在预授权交易30日内发起,否则预授权交易自动解冻。预授权完成金额可以是预授权金额的(0-115%] */ $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); // 初始化日志 $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '03', 'txnSubType' => '00', 'bizType' => '000201', 'accessType' => '0', 'channelType' => '07', 'backUrl' => SDK_BACK_NOTIFY_URL, 'orderId' => $_POST["orderId"], 'merId' => $_POST["merId"], 'origQryId' => $_POST["origQryId"], 'txnTime' => $_POST["txnTime"], 'txnAmt' => $_POST["txnAmt"]); sign($params); // 签名 $url = SDK_BACK_TRANS_URL; $log->LogInfo("后台请求地址为>" . $url); $result = post($params, $url, $errMsg); if (!$result) { //没收到200应答的情况 printResult($url, $params, ""); echo "POST请求失败:" . $errMsg; return; } $log->LogInfo("后台返回结果为>" . $result); $result_arr = convertStringToArray($result); printResult($url, $params, $result); //页面打印请求应答数据
<?php //退货接口 define('UNIONPAY_PATH', dirname(__FILE__)); include_once UNIONPAY_PATH . '/lib/common.php'; include_once UNIONPAY_PATH . '/lib/SDKConfig.php'; include_once UNIONPAY_PATH . '/lib/secureUtil.php'; include_once UNIONPAY_PATH . '/lib/httpClient.php'; include_once UNIONPAY_PATH . '/lib/log.class.php'; // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '04', 'txnSubType' => '00', 'bizType' => '000201', 'accessType' => '0', 'channelType' => '08', 'orderId' => date('YmdHis'), 'merId' => '826340173990002', 'origQryId' => '201509241600567417338', 'txnTime' => date('YmdHis'), 'txnAmt' => 1, 'backUrl' => SDK_BACK_NOTIFY_URL, 'reqReserved' => ' 透传信息'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_BACK_TRANS_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_BACK_TRANS_URL); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败';
<?php header('Content-type: application/json;charset=UTF-8'); include_once './func/common.php'; include_once './func/SDKConfig.php'; include_once './func/secureUtil.php'; include_once './func/encryptParams.php'; include_once './func/httpClient.php'; include_once './custom_func.php'; if (!isset($_POST['card_info'])) { die(json_encode(array('status' => 400, 'message' => 'Invalid input: card_info is required.'))); } $decrypted_post_data = decrypt_post_data($_POST['card_info']); try { $card_info = json_decode($decrypted_post_data, True); } catch (Exception $e) { die(json_encode(array('status' => 400, 'message' => 'Error parsing post data.'))); } $params = array('version' => '5.0.0', 'encoding' => 'GBK', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '77', 'txnSubType' => '02', 'bizType' => '000301', 'channelType' => '07', 'backUrl' => $SDK_BACK_NOTIFY_URL, 'accessType' => '0', 'merId' => $SDK_MER_ID, 'orderId' => gen_order_id(), 'txnTime' => gen_order_time(), 'accType' => $card_info['acc_type'], 'accNo' => $card_info['acc_no'], 'txnAmt' => get_payment_amount(), 'currencyCode' => '156', 'customerInfo' => customerInfo_sms($card_info['acc_no'], $card_info['certif_tp'], $card_info['certif_id'], iconv("UTF-8", "gb2312", $card_info['customer_name']), $card_info['phone_no'], $card_info['pin'], $card_info['cvn2'], $card_info['expired']), 'encryptCertId' => getEncryptCertId()); // 检查字段是否需要加密 encrypt_params($params); // 签名 sign($params); // 发送信息到后台 $result = sendHttpRequest($params, $SDK_BACK_TRANS_URL); $result_array = coverStringToArray($result); if ($result_array['respCode'] != '00') { die(json_encode(array('status' => -1, 'message' => 'Error querying Unionpay API.', 'error_resp_code' => $result_array['respCode'], 'error_resp_msg' => iconv('gb2312', 'UTF-8', $result_array['respMsg'])))); } echo json_encode(array('status' => 200, 'message' => 'Success'));
function unionpay() { include_once LIB_PATH . 'ORG/Payment/UnionPay/mobile/lib/common.php'; include_once LIB_PATH . 'ORG/Payment/UnionPay/mobile/lib/SDKConfig.php'; include_once LIB_PATH . 'ORG/Payment/UnionPay/mobile/lib/secureUtil.php'; include_once LIB_PATH . 'ORG/Payment/UnionPay/mobile/lib/httpClient.php'; include_once LIB_PATH . 'ORG/Payment/UnionPay/mobile/lib/log.class.php'; $order_sn = $_GET['order_sn']; $token = $this->token; $wecha_id = $this->wechat_id; if (empty($order_sn)) { $this->error('没有订单号'); } $trade = M('b2c_wingtrade')->where(array('order_sn' => $order_sn, 'token' => $token))->find(); if ($trade && $trade['is_pay'] == '1') { $this->success('该订单已付款,不能重复付款!'); } $pay_type = $_GET['pay_type']; if ($pay_type == '1') { $order = M('hotel_order')->where(array('sn' => $order_sn, 'token' => $token, 'order_status' => 3))->find(); } elseif ($pay_type == '2') { $order = M('dine_order')->where(array('sn' => $order_sn, 'status' => 2))->find(); } else { $order = M('b2c_order')->where(array('sn' => $order_sn, 'token' => $token, 'status' => 1))->find(); } if (!$order) { $this->error('该订单不存在'); } $payment_where = array('token' => $token, 'pay_code' => 'unionpay', 'enabled' => '1', 'pay_type' => $pay_type); if (!empty($this->branch_id)) { $payment_where['branch_id'] = $this->branch_id; } $payment = M('b2c_payment')->where($payment_where)->find(); //$wingpay_config = unserialize($payment['pay_config']); if (empty($payment)) { $this->error('商家未设置银联支付方式!请联系商家客服!'); } //PageRetUrl 返回支付后的商户网站页面 $pagereturl = $_GET['front_url']; /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); if ($pay_type == '1') { $total_fee = intval($order['prepayment'] * 100); } elseif ($pay_type == '2') { $total_fee = intval($order['price'] * 100); } else { $total_fee = intval($order['price'] * 100); } $order_time = date('YmdHis'); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'UTF-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000000', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => '898340148160231', 'orderId' => $order_sn, 'txnTime' => $order_time, 'txnAmt' => $total_fee, 'currencyCode' => '156', 'defaultPayType' => '0001'); // 签名 sign($params); $data = array('token' => $token, 'order_sn' => $order_sn, 'is_pay' => '0', 'set_params' => serialize(array_merge($params, array('return_url' => $pagereturl, 'pay_type' => $pay_type))), 'update_time' => time()); if (!$trade) { $data['create_time'] = time(); M('b2c_wingtrade')->add($data); } else { M('b2c_wingtrade')->where(array('token' => $token, 'order_sn' => $order_sn, 'is_pay' => '0'))->save($data); } /*手机WAP支付方式*/ // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); $log->LogInfo("-------前台交易自动提交表单>--begin----"); $log->LogInfo($html_form); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); echo $html_form; }
/** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function get_code($order, $payment, $agent_type) { // 初始化变量 if (!defined('EC_CHARSET')) { $charset = 'UTF-8'; } else { $charset = strtoupper(EC_CHARSET); } // 初始化日志 //global $log; $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $orderNumber = $order['order_sn'] . $this->_formatSN($order['log_id']); $isVirtual = exist_virtual_card_goods($order['order_id']); $member_id = SDK_MEMBER_PC_REAL_ID; $cert_path = SDK_MEMBER_MOBILE_REAL_ID; $frontEndUrl = return_url(basename(__FILE__, '.php')); $backEndUrl = return_url(basename(__FILE__, '.php')); if ($agent_type == '07') { if ($isVirtual) { $member_id = SDK_MEMBER_PC_VIRTUAL_ID; $cert_path = SDK_SIGN_PC_VIRTUAL_PATH; } else { $member_id = SDK_MEMBER_PC_REAL_ID; $cert_path = SDK_SIGN_PC_REAL_PATH; } $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId($cert_path), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => $frontEndUrl, 'backUrl' => $backEndUrl, 'signMethod' => '01', 'channelType' => '07', 'accessType' => '0', 'merId' => $member_id, 'orderId' => $orderNumber, 'txnTime' => date('YmdHis'), 'txnAmt' => $order['order_amount'] * 100, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => ' 透传信息'); } else { if ($isVirtual) { $member_id = SDK_MEMBER_MOBILE_VIRTUAL_ID; $cert_path = SDK_SIGN_MOBILE_VIRTUAL_PATH; } else { $member_id = SDK_MEMBER_MOBILE_REAL_ID; $cert_path = SDK_SIGN_MOBILE_REAL_PATH; } $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId($cert_path), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => $frontEndUrl, 'backUrl' => $backEndUrl, 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => $member_id, 'orderId' => $orderNumber, 'txnTime' => date('YmdHis'), 'txnAmt' => $order['order_amount'] * 100, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => ' 透传信息'); } sign($params, $cert_path); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $button = "<input type='submit' value='银联支付' />"; $html_form = create_html($params, $front_uri, $button); $log->LogInfo("-------前台交易自动提交表单>--begin----"); $log->LogInfo($html_form); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); return $html_form; // $params = array( // "version" => '1.0.0', //接口版本 // "signMethod" => 'md5', //加密方式 // "charset" => $charset, //编码 // "transType" => '01', //交易类型 // "origQid" => '', // "merId" => $merId, //收款账号 // "merAbbr" => $merAbbr, //商户名称 // "acqCode" => '', // "merCode" => '', // "commodityUrl" => '', //商品url // "commodityName" => '', //商品名字 // "commodityUnitPrice" => '', //商品单价 // "commodityQuantity" => '', //商品数量 // "commodityDiscount" => '', // "transferFee" => '', // "orderNumber" => $orderNumber, //订单号,必须唯一 // "orderAmount" => $order['order_amount'] * 100, //交易金额 转化为分 // "orderCurrency" => '156', //交易币种,CURRENCY_CNY=>人民币 // "orderTime" => date('YmdHis'), //交易时间, YYYYmmhhddHHMMSS // "customerIp" => $_SERVER['REMOTE_ADDR'], //用户IP // "customerName" => '', // "defaultPayType" => '', // "defaultBankNumber" => '', // "transTimeout" => '', // "frontEndUrl" => $frontEndUrl, // 前台回调URL // "backEndUrl" => $backEndUrl, // 后台回调URL // "merReserved" => '' // ); // $params['signature'] =$this->sign($params, $security_key,'md5'); // $button = "<input type='submit' value='" . $GLOBALS['_LANG']['upop_button'] . "' />"; // $html = $this->create_html($params,$front_pay_url,$button); // return $html; // 签名 }
header('location:/member.php'); exit; } $userid = AuthCode($row['id'], 'ENCODE'); require_once dirname(__FILE__) . '/func/common.php'; require_once dirname(__FILE__) . '/func/SDKConfig.php'; require_once dirname(__FILE__) . '/func/secureUtil.php'; require_once dirname(__FILE__) . '/func/log.class.php'; /** * 消费交易-前台 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => 'http://localhost/data/api/unionpay/Balance_FrontReceive.php', 'backUrl' => 'http://localhost/data/api/unionpay/Balance_BackReceive.php', 'signMethod' => '01', 'channelType' => '07', 'accessType' => '0', 'merId' => '777290058112538', 'orderId' => date('YmdHis'), 'txnTime' => date('YmdHis'), 'txnAmt' => $money * 100, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => $userid); // 签名 sign($params); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); $log->LogInfo("-------前台交易自动提交表单>--begin----"); $log->LogInfo($html_form); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); echo $html_form;
$ret['uniacid'] = $log['uniacid']; $ret['result'] = 'success'; $ret['type'] = $log['type']; $ret['from'] = 'return'; $ret['tid'] = $log['tid']; $ret['uniontid'] = $log['uniontid']; $ret['user'] = $log['openid']; $ret['fee'] = $log['fee']; $ret['tag'] = $log['tag']; $ret['is_usecard'] = $log['is_usecard']; $ret['card_fee'] = $log['card_fee']; $ret['card_id'] = $log['card_id']; $site->{$method}($ret); exit('success'); } } } $sql = 'SELECT * FROM ' . tablename('core_paylog') . ' WHERE `plid`=:plid'; $paylog = pdo_fetch($sql, array(':plid' => $params['tid'])); if (!empty($paylog) && $paylog['status'] != '0') { exit('这个订单已经支付成功, 不需要重复支付.'); } $auth = sha1($sl . $paylog['uniacid'] . $_W['config']['setting']['authkey']); if ($auth != $_GPC['auth']) { exit('参数传输错误.'); } $_W['openid'] = intval($paylog['openid']); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000201', 'frontUrl' => SDK_FRONT_NOTIFY_URL . '?i=' . $_W['uniacid'], 'backUrl' => SDK_BACK_NOTIFY_URL . '?i=' . $_W['uniacid'], 'signMethod' => '01', 'channelType' => '08', 'accessType' => '0', 'merId' => SDK_MERID, 'orderId' => $paylog['uniontid'], 'txnTime' => date('YmdHis'), 'txnAmt' => $paylog['fee'] * 100, 'currencyCode' => '156', 'defaultPayType' => '0001', 'reqReserved' => $_W['uniacid']); sign($params); $html_form = create_html($params, SDK_FRONT_TRANS_URL); echo $html_form;
<?php header('Content-type:text/html;charset=utf-8'); include_once '../func/common.php'; include_once '../func/SDKConfig.php'; include_once '../func/secureUtil.php'; include_once '../func/encryptParams.php'; include_once '../func/httpClient.php'; include_once '../func/log.class.php'; /** * 预授权交易 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '02', 'txnSubType' => '00', 'bizType' => '000000', 'channelType' => '07', 'backUrl' => SDK_BACK_TRANS_URL, 'accessType' => '0', 'merId' => '898340183980105', 'subMerId' => '', 'subMerName' => '', 'subMerAbbr' => '', 'orderId' => date('YmdHis'), 'txnTime' => date('YmdHis'), 'accType' => '', 'accNo' => '', 'txnAmt' => '1', 'currencyCode' => '156', 'customerInfo' => customerInfo(), 'termId' => '', 'reqReserved' => '', 'reserved' => '', 'riskRateInfo' => '', 'encryptCertId' => '', 'instalTransInfo' => '', 'issInsCode' => '', 'userMac' => '', 'cardTransData' => '', 'vpcTransData' => '', 'orderDesc' => ''); // 检查字段是否需要加密 encrypt_params($params); // 签名 sign($params); $log->LogInfo("后台请求地址为>" . SDK_BACK_TRANS_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_BACK_TRANS_URL); $log->LogInfo("后台返回结果为>" . $result); //返回结果展示 $result_arr = coverStringToArray($result); $html = create_html($result_arr, SDK_BACK_NOTIFY_URL); echo $html;
/** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog ( SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL ); $log->LogInfo ( "===========处理后台请求开始============" ); $params = array( //固定填写 'version'=> '5.0.0',//版本号--M //默认取值:UTF-8 'encoding'=> 'GBK',//编码方式--M //通过MPI插件获取 'certId'=> getSignCertId(),//证书ID--M //01RSA02 MD5 (暂不支持) 'signMethod'=> '01',//签名方法--M //取值:02 'txnType'=> '02',//交易类型--M //01:预授权通过地址区分前台与后台交易 'txnSubType'=> '01',//交易子类--M 'bizType'=> '000000',//产品类型--M 'channelType'=> '07',//渠道类型--M //后台返回商户结果时使用,如上送,则发送商户后台交易结果通知 'backUrl'=> SDK_BACK_TRANS_URL,//后台通知地址--M //0:普通商户直连接入2:平台类商户接入 'accessType'=> '0',//接入类型--M // 'merId'=> '898340183980105',//商户代码--M //商户类型为平台类商户接入时必须上送
<?php header('Content-type:text/html;charset=GBK'); include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/common.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/SDKConfig.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/secureUtil.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/httpClient.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/log.class.php'; /** * 退货 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'GBK', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '04', 'txnSubType' => '00', 'bizType' => '000000', 'accessType' => '0', 'channelType' => '07', 'orderId' => date('YmdHis'), 'merId' => '898340183980105', 'origQryId' => '201501062125593073808', 'txnTime' => date('YmdHis'), 'txnAmt' => '100', 'backUrl' => SDK_BACK_NOTIFY_URL); // 签名 sign($params); $log->LogInfo("后台请求地址为>" . SDK_BACK_TRANS_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_BACK_TRANS_URL); $log->LogInfo("后台返回结果为>" . $result); //返回结果展示 $result_arr = coverStringToArray($result); $html = create_html($result_arr, SDK_FRONT_NOTIFY_URL); echo $html; ?>
<?php header('Content-type:text/html;charset=GBK'); include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/common.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/SDKConfig.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/secureUtil.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/httpClient.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/gbk/func/log.class.php'; /** * 文件传输类交易 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'GBK', 'certId' => getSignCertId(), 'txnType' => '76', 'signMethod' => '01', 'txnSubType' => '01', 'bizType' => '000000', 'accessType' => '0', 'merId' => '700000000000001', 'settleDate' => '0119', 'txnTime' => date('YmdHis'), 'fileType' => '00'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_FILE_QUERY_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_FILE_QUERY_URL); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败'; // 处理文件,保存路径在配置文件中修改,注意预先建立文件夹并授读写权限 deal_file($result_arr);
<?php header('Content-type:text/html;charset=utf-8'); include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/common.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/SDKConfig.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/secureUtil.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/httpClient.php'; include_once $_SERVER['DOCUMENT_ROOT'] . '/upacp_sdk_php/utf8/func/log.class.php'; /** * 查询交易 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '00', 'txnSubType' => '00', 'bizType' => '000000', 'accessType' => '0', 'channelType' => '07', 'orderId' => '20150206215110', 'merId' => '888888888888888', 'txnTime' => '20150206212559'); // 签名 sign($params); echo "请求:" . getRequestParamString($params); $log->LogInfo("后台请求地址为>" . SDK_SINGLE_QUERY_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_SINGLE_QUERY_URL); $log->LogInfo("后台返回结果为>" . $result); echo "应答:" . $result; //返回结果展示 $result_arr = coverStringToArray($result); echo verify($result_arr) ? '验签成功' : '验签失败'; ?>
<?php header('Content-type:text/html;charset=GBK'); include_once '../func/common.php'; include_once '../func/SDKConfig.php'; include_once '../func/secureUtil.php'; include_once '../func/encryptParams.php'; include_once '../func/httpClient.php'; include_once '../func/log.class.php'; /** * 预授权完成撤销交易 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'GBK', 'certId' => getSignCertId(), 'signMethod' => '01', 'txnType' => '33', 'txnSubType' => '00', 'bizType' => '000000', 'channelType' => '07', 'backUrl' => SDK_BACK_TRANS_URL, 'accessType' => '0', 'merId' => '898340183980105', 'subMerId' => '', 'subMerName' => '', 'subMerAbbr' => '', 'orderId' => date('YmdHis'), 'origQryId' => date('YmdHis'), 'txnTime' => date('YmdHis'), 'txnAmt' => '1', 'termId' => '', 'reqReserved' => '', 'reserved' => '', 'vpcTransData' => ''); // 签名 sign($params); $log->LogInfo("后台请求地址为>" . SDK_BACK_TRANS_URL); // 发送信息到后台 $result = sendHttpRequest($params, SDK_BACK_TRANS_URL); $log->LogInfo("后台返回结果为>" . $result); //返回结果展示 $result_arr = coverStringToArray($result); $html = create_html($result_arr, SDK_BACK_NOTIFY_URL); echo $html;
* 版权: 中国银联<br> * 说明:以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考,不提供编码性能规范性等方面的保障<br> * 该接口参考文档位置:open.unionpay.com帮助中心 下载 产品接口规范 《网关支付产品接口规范》<br> * 《平台接入接口规范-第5部分-附录》(内包含应答码接口规范,全渠道平台银行名称-简码对照表)<br> * 《全渠道平台接入接口规范 第3部分 文件接口》(对账文件格式说明)<br> * 测试过程中的如果遇到疑问或问题您可以:1)优先在open平台中查找答案: * 调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案 * 测试过程中产生的6位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案 * 2) 咨询在线人工支持: open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”,咨询人工QQ测试支持。 * 交易说明: 对账文件的格式请参考《全渠道平台接入接口规范 第3部分 文件接口》 * 对账文件示例见目录file下的802310048993424_20150905.zip * 解析落地后的对账文件可以参考BaseDemo.java中的parseZMFile();parseZMEFile();方法 */ $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("===========处理后台请求开始============"); $params = array('version' => '5.0.0', 'encoding' => 'utf-8', 'certId' => getSignCertId(), 'txnType' => '76', 'signMethod' => '01', 'txnSubType' => '01', 'bizType' => '000000', 'accessType' => '0', 'fileType' => '00', 'txnTime' => $_POST["txnTime"], 'merId' => $_POST["merId"], 'settleDate' => $_POST["settleDate"]); sign($params); $url = SDK_FILE_QUERY_URL; $log->LogInfo("后台请求地址为>" . $url); $result = post($params, $url, $errMsg); if (!$result) { // 没收到200应答的情况 printResult($url, $params, ""); echo "POST请求失败:" . $errMsg; return; } $log->LogInfo("后台返回结果为>" . $result); $result_arr = convertStringToArray($result); printResult($url, $params, $result); //页面打印请求应答数据 if (!verify($result_arr)) {
function pay() { $this->load->database(); $logId = $this->input->get('logId'); $rw = $this->db->query(" select * from `moneylog` where `logId`=" . $logId)->row(); // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'UTF-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000000', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '07', 'accessType' => '0', 'merId' => '898110260120032', 'orderId' => $rw->ordernumber, 'txnTime' => date('YmdHis'), 'txnAmt' => $rw->shouru * 100, 'currencyCode' => '156', 'defaultPayType' => '0001'); // 签名 sign($params); // 前台请求地址 $front_uri = SDK_FRONT_TRANS_URL; $log->LogInfo("前台请求地址为>" . $front_uri); // 构造 自动提交的表单 $html_form = create_html($params, $front_uri); $log->LogInfo("-------前台交易自动提交表单>--begin----"); $log->LogInfo($html_form); $log->LogInfo("-------前台交易自动提交表单>--end-------"); $log->LogInfo("============处理前台请求 结束==========="); echo $html_form; }
header('Content-type:text/html;charset=gbk'); include_once 'func/common.php'; include_once 'func/SDKConfig.php'; include_once 'func/secureUtil.php'; include_once 'func/httpClient.php'; include_once 'func/log.class.php'; /** * 消费交易-控件后台订单推送 */ /** * 以下代码只是为了方便商户测试而提供的样例代码,商户可以根据自己需要,按照技术文档编写。该代码仅供参考 */ // 初始化日志 $log = new PhpLog(SDK_LOG_FILE_PATH, "PRC", SDK_LOG_LEVEL); $log->LogInfo("============处理前台请求开始==============="); // 初始化日志 $params = array('version' => '5.0.0', 'encoding' => 'UTF-8', 'certId' => getSignCertId(), 'txnType' => '01', 'txnSubType' => '01', 'bizType' => '000000', 'frontUrl' => SDK_FRONT_NOTIFY_URL, 'backUrl' => SDK_BACK_NOTIFY_URL, 'signMethod' => '01', 'channelType' => '07', 'accessType' => '0', 'merId' => '898340183980105', 'orderId' => date('YmdHis'), 'txnTime' => date('YmdHis'), 'txnAmt' => '100', 'currencyCode' => '156', 'defaultPayType' => '0001'); // 签名 sign($params); $log->LogInfo("后台请求地址为>" . SDK_App_Request_Url); // 发送信息到后台 $result = sendHttpRequest($params, SDK_App_Request_Url); $log->LogInfo("后台返回结果为>" . $result); //返回结果展示 $result_arr = coverStringToArray($result); $html = create_html($result_arr, SDK_FRONT_NOTIFY_URL); echo $html; ?>