function getToken() { include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; include_once CUR_CONF_PATH . 'lib/hg_order.class.php'; $config = array(); $hgPayFactory = hgPayFactory::get_instance($config); $pay_driver = $hgPayFactory->get_driver('weixin'); $ret = $pay_driver->getToken(); var_dump($ret); }
public function to_pay() { $trade_number = $this->input['trade_number']; $pay_type = trim($this->input['pay_type']); if (!$trade_number) { $this->errorOutput('NO TRADE_NUMBER'); } if (!$pay_type) { $this->errorOutput('NO PAY_TYPE'); } if (!in_array($pay_type, array_keys($this->settings['pay_type']))) { $this->errorOutput('ERROR PAY_TYPE'); } $sql = "SELECT * FROM " . DB_PREFIX . "pay_config WHERE 1 AND pay_type = '" . $pay_type . "' AND status = 1"; $pay_type_info = $this->db->query_first($sql); if (empty($pay_type_info)) { $this->errorOutput('ERROR PAY_TYPE'); } $sql = "SELECT * FROM " . DB_PREFIX . "orders WHERE 1 AND trade_number = '" . $trade_number . "'"; $order_info = $this->db->query_first($sql); if (empty($order_info)) { $this->errorOutput('NO EXISTS ORDER'); } if ($order_info['trade_status'] != 'NOT_PAY') { $this->errorOutput('ORDER CAN NOT PAY'); } $order_info['title'] = $order_info['title'] ? $order_info['title'] : '订单'; $order_info['trade_create_time'] = date('YmdHis', $order_info['trade_create_time']); $order_info['trade_expire_time'] = date('YmdHis', $order_info['trade_expire_time']); $order_info['total_fee'] = intval($order_info['total_fee'] * 100); $pay_type_info['pay_config'] = $pay_type_info['pay_config'] ? unserialize($pay_type_info['pay_config']) : array(); $pay_type_info['pay_config']['type'] = $pay_type_info['pay_type']; $pay_config[$pay_type_info['pay_type']] = $pay_type_info['pay_config']; include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; $hgPayFactory = hgPayFactory::get_instance($pay_config); $pay_driver = $hgPayFactory->get_driver($pay_type); $ret = $pay_driver->getPayParam($order_info); if (empty($ret)) { $this->errorOutput('FAILURE'); } if ($ret['errno']) { $this->errorOutput($ret['errmsg']); } if (!$ret['sdk_param']) { $this->errorOutput('RETURN PARAM ERROR'); } foreach ((array) $ret as $key => $val) { $this->addItem_withkey($key, $val); } $this->output(); }
function show() { include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; include_once CUR_CONF_PATH . 'lib/hg_order.class.php'; $config = array(); $hgPayFactory = hgPayFactory::get_instance($config); $pay_driver = $hgPayFactory->get_driver('unionpay'); $data = array('orderTime' => '20141120145525', 'settleDate' => '1120', 'orderNumber' => 'YB1098777782113519', 'exchangeRate' => '0', 'signature' => 'b63ffb2a963a2d10232f7008769afb92', 'settleCurrency' => '156', 'signMethod' => 'MD5', 'transType' => '01', 'respCode' => '00', 'charset' => 'UTF-8', 'sysReserved' => '{traceTime=1120145525&acqCode=00215800&traceNumber=009978}', 'version' => '1.0.0', 'settleAmount' => '1000', 'transStatus' => '00', 'merId' => '880000000002996', 'qn' => '201411201455250099787'); $cancle_data = array('orderTime' => '20141120172921', 'settleDate' => '1120', 'orderNumber' => '20141120172921', 'exchangeRate' => '0', 'signature' => '8b6c94a155ee96e756bb9a5dd25297ce', 'settleCurrency' => '156', 'signMethod' => 'MD5', 'transType' => '31', 'respCode' => '00', 'charset' => 'UTF-8', 'sysReserved' => '{traceTime=1120172921&acqCode=00215800&traceNumber=008859}', 'version' => '1.0.0', 'settleAmount' => '1000', 'transStatus' => '00', 'merId' => '880000000002996', 'qn' => '201411201729210088597'); $refued_data = array('orderTime' => '20141120174303', 'settleDate' => '1120', 'orderNumber' => '20141120174303', 'exchangeRate' => '0', 'signature' => '9f293b265deb908164275d6359e861f4', 'settleCurrency' => '156', 'signMethod' => 'MD5', 'transType' => '04', 'respCode' => '00', 'charset' => 'UTF-8', 'sysReserved' => '{traceTime=1120174303&acqCode=00215800&traceNumber=010740}', 'version' => '1.0.0', 'settleAmount' => '2000', 'transStatus' => '00', 'merId' => '880000000002996', 'qn' => '201411201743030107407'); $reqString = $pay_driver->createLinkString($refued_data); echo $reqString; exit; var_dump($data); }
function show() { include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; include_once CUR_CONF_PATH . 'lib/hg_order.class.php'; $config = array(); $hgPayFactory = hgPayFactory::get_instance($config); $pay_driver = $hgPayFactory->get_driver('unionpay'); $order = new HgOrder(); $order->desc = '我是来测试退货的'; $order->trade_create_time = '20141120174303'; //date('YmdHis', TIMENOW); $order->trade_expire_time = date('YmdHis', TIMENOW + 3600); $order->trade_num = '20141120174303'; //date('YmdHis', TIMENOW); $order->total_fee = '2000'; $data = $pay_driver->getPayParam($order); // $order->pay_trade_num = '20141120174303'; // $data = $pay_driver->query($order); var_dump($data); }
public function show() { $_POST = array('discount' => '0.00', 'payment_type' => '1', 'subject' => '烟台总站 --- 潍坊', 'trade_no' => '2015051900001000460052699577', 'buyer_email' => '*****@*****.**', 'gmt_create' => '2015-05-19 14:50:16', 'notify_type' => 'trade_status_sync', 'quantity' => '1', 'out_trade_no' => 'HG143201806422973', 'seller_id' => '2088311932496637', 'notify_time' => '2015-05-19 14:50:16', 'body' => '烟台总站 --- 潍坊', 'trade_status' => 'WAIT_BUYER_PAY', 'is_total_fee_adjust' => 'Y', 'total_fee' => '0.01', 'seller_email' => '*****@*****.**', 'price' => '0.01', 'buyer_id' => '2088202251232465', 'notify_id' => '3c3fb0e8c69af7e943ede698a34060814k', 'use_coupon' => 'N', 'sign_type' => 'RSA', 'sign' => 'OhYoy9zkSl800eFteXYG4JkJtNPVC++fbCM3gfcEfvAgpuaOl07v2VkH9KnwcGYYhMHp1GoZNh6h9SuPYBM5444BZgXtz1ilqUTpQBjuF5nZ+WA4Mnz4iEA0Ib+V7LDQIiIO5aM+JlGvpADwGKZ8EnVHjL2GA0ZMPpDMhWQy11s='); //查询支付配置 $sql = "SELECT pay_config FROM " . DB_PREFIX . "pay_config WHERE 1 AND pay_type = 'alipay'"; $pay_type_info = $this->db->query_first($sql); if (empty($pay_type_info)) { echo "fail"; exit; } $pay_type_info['pay_config'] = $pay_type_info['pay_config'] ? unserialize($pay_type_info['pay_config']) : array(); $pay_type_info['pay_config']['type'] = 'alipay'; $pay_config['alipay'] = $pay_type_info['pay_config']; include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; $hgPayFactory = hgPayFactory::get_instance($pay_config); $pay_driver = $hgPayFactory->get_driver('alipay'); //签名验证(RSA方式) (参数: 待签名字符串;支付宝公钥;sign值) //这里只要将待签名数组按键值排序即可 (支付宝需要按字母升序) if ($pay_driver->verifyNotify($_POST)) { //验证订单号是不是我们自己的订单号 echo 'PASS'; exit; // 服务器签名验证成功 if ($_POST['transStatus'] == '00') { $sql = "SELECT app_uniqueid, order_type, out_trade_number,out_trade_info,trade_number, trade_status, total_fee FROM " . DB_PREFIX . "orders WHERE trade_number = '" . $_POST['orderNumber'] . "'"; $order_info = $this->db->query_first($sql); if ($order_info['trade_status'] == 'NOT_PAY') { if (intval($order_info['total_fee'] * 100) != $_POST['settleAmount']) { $trade_status = 'TRADE_EXCEPTION'; } //更改订单状态 $info = array('trade_deal_time' => time(), 'trade_status' => $trade_status ? $trade_status : "HAS_PAY"); $condition = " trade_number = '" . $_POST['orderNumber'] . "'"; $this->db->update_data($info, 'orders', $condition); //记录交易流水 $trade_flow = array('trade_number' => $order_info['trade_number'], 'pay_platform' => 'alipay', 'trade_type' => $_POST['transType'] == '01' ? 1 : 2, 'qn' => $_POST['qn'], 'trade_fee' => $_POST['settleAmount'] / 100, 'trade_time' => TIMENOW, "trade_status" => "TRADE_SUCCESS"); $this->db->insert_data($trade_flow, 'order_bank_trade_flow'); if ($order_info['order_type'] == 'THIRD_PARTY') { //通知第三方订单 $sql = "SELECT * FROM " . DB_PREFIX . "app_access WHERE app_uniqueid = '" . $order_info['app_uniqueid'] . "'"; $app = $this->db->query_first($sql); if (!empty($app)) { include_once ROOT_PATH . 'lib/class/curl.class.php'; $curl = new curl($app['host'], $app['dir']); $curl->setSubmitType('post'); $curl->setReturnFormat('json'); $curl->initPostData(); $curl->addRequestData('a', $app['pay_func']); $curl->addRequestData('trade_number', $order_info['out_trade_number']); $curl->addRequestData('total_fee', $order_info['total_fee']); $curl->addRequestData('out_trade_info', $order_info['out_trade_info']); //第三方订单详情 $ret = $curl->request($app['request_file']); if ($ret['success'] == 1) { $this->db->update_data(array('out_trade_notify' => 2, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } else { $this->db->update_data(array('out_trade_notify' => 0, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } } } echo 'success'; } else { echo "fail"; } } else { echo "fail"; } } else { // 服务器签名验证成功 echo "fail"; } }
public function show() { //查询支付配置 $sql = "SELECT pay_config FROM " . DB_PREFIX . "pay_config WHERE 1 AND pay_type = 'unionpay'"; $pay_type_info = $this->db->query_first($sql); if (empty($pay_type_info)) { echo "fail"; exit; } $pay_type_info['pay_config'] = $pay_type_info['pay_config'] ? unserialize($pay_type_info['pay_config']) : array(); $pay_type_info['pay_config']['type'] = 'unionpay'; $pay_config['unionpay'] = $pay_type_info['pay_config']; include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; $hgPayFactory = hgPayFactory::get_instance($pay_config); $pay_driver = $hgPayFactory->get_driver('unionpay'); if ($pay_driver->verifySignature($_POST)) { // 服务器签名验证成功 if ($_POST['transStatus'] == '00') { $sql = "SELECT app_uniqueid, order_type, out_trade_number,trade_number, trade_status, total_fee FROM " . DB_PREFIX . "orders WHERE trade_number = '" . $_POST['orderNumber'] . "'"; $order_info = $this->db->query_first($sql); if ($order_info['trade_status'] == 'NOT_PAY') { if (intval($order_info['total_fee'] * 100) != $_POST['settleAmount']) { $trade_status = 'TRADE_EXCEPTION'; } //更改订单状态 $info = array('trade_deal_time' => time(), 'trade_status' => $trade_status ? $trade_status : "HAS_PAY"); $condition = " trade_number = '" . $_POST['orderNumber'] . "'"; $this->db->update_data($info, 'orders', $condition); //记录交易流水 $trade_flow = array('trade_number' => $order_info['trade_number'], 'pay_platform' => 'unionpay', 'trade_type' => $_POST['transType'] == '01' ? 1 : 2, 'qn' => $_POST['qn'], 'trade_fee' => $_POST['settleAmount'] / 100, 'trade_time' => TIMENOW, "trade_status" => "TRADE_SUCCESS"); $this->db->insert_data($trade_flow, 'order_bank_trade_flow'); if ($order_info['order_type'] == 'THIRD_PARTY') { //通知第三方订单 $sql = "SELECT * FROM " . DB_PREFIX . "app_access WHERE app_uniqueid = '" . $order_info['app_uniqueid'] . "'"; $app = $this->db->query_first($sql); if (!empty($app)) { include_once ROOT_PATH . 'lib/class/curl.class.php'; $curl = new curl($app['host'], $app['dir']); $curl->setSubmitType('post'); $curl->setReturnFormat('json'); $curl->initPostData(); $curl->addRequestData('a', $app['pay_func']); $curl->addRequestData('trade_number', $order_info['out_trade_number']); $curl->addRequestData('total_fee', $order_info['total_fee']); $ret = $curl->request($app['request_file']); if ($ret['success'] == 1) { $this->db->update_data(array('out_trade_notify' => 2, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } else { $this->db->update_data(array('out_trade_notify' => 0, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } } } echo 'success'; } else { echo "fail"; } } else { echo "fail"; } } else { // 服务器签名验证成功 echo "fail"; } }
public function show() { //查询支付配置 $sql = "SELECT pay_config FROM " . DB_PREFIX . "pay_config WHERE 1 AND pay_type = 'weixin'"; $pay_type_info = $this->db->query_first($sql); if (empty($pay_type_info)) { echo "fail"; exit; } $pay_type_info['pay_config'] = $pay_type_info['pay_config'] ? unserialize($pay_type_info['pay_config']) : array(); $pay_type_info['pay_config']['type'] = 'weixin'; $pay_config['weixin'] = $pay_type_info['pay_config']; include_once CUR_CONF_PATH . 'lib/pay/hg_pay.class.php'; $hgPayFactory = hgPayFactory::get_instance($pay_config); $pay_driver = $hgPayFactory->get_driver('weixin'); if ($pay_driver->verifySignature($_REQUEST)) { //商户交易单号 $out_trade_no = $_REQUEST["out_trade_no"]; //财付通订单号 $transaction_id = $_REQUEST["transaction_id"]; //商品金额,以分为单位 $total_fee = $_REQUEST["total_fee"]; //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee $discount = $_REQUEST["discount"]; //支付结果 $trade_state = $_REQUEST["trade_state"]; // 服务器签名验证成功 if ($trade_state == '0') { $sql = "SELECT app_uniqueid, order_type, out_trade_number,trade_number, trade_status, total_fee FROM " . DB_PREFIX . "orders WHERE trade_number = '" . $out_trade_no . "'"; $order_info = $this->db->query_first($sql); if ($order_info['trade_status'] == 'NOT_PAY') { if (intval($order_info['total_fee'] * 100) != $total_fee + $discount) { $trade_status = 'TRADE_EXCEPTION'; } //更改订单状态 $info = array('trade_deal_time' => time(), 'trade_status' => $trade_status ? $trade_status : "HAS_PAY"); $condition = " trade_number = '" . $out_trade_no . "'"; $this->db->update_data($info, 'orders', $condition); //记录交易流水 $trade_flow = array('trade_number' => $order_info['trade_number'], 'pay_platform' => 'unionpay', 'trade_type' => $_REQUEST['is_refund'] == true ? 1 : 2, 'qn' => $_POST['qn'], 'trade_fee' => ($total_fee + $discount) / 100, 'trade_time' => TIMENOW, "trade_status" => "TRADE_SUCCESS"); $this->db->insert_data($trade_flow, 'order_bank_trade_flow'); if ($order_info['order_type'] == 'THIRD_PARTY') { //通知第三方订单 $sql = "SELECT * FROM " . DB_PREFIX . "app_access WHERE app_uniqueid = '" . $order_info['app_uniqueid'] . "'"; $app = $this->db->query_first($sql); if (!empty($app)) { include_once ROOT_PATH . 'lib/class/curl.class.php'; $curl = new curl($app['host'], $app['dir']); file_put_contents('../cache/4444.txt', var_export($curl, 1), FILE_APPEND); $curl->setSubmitType('post'); $curl->setReturnFormat('json'); $curl->initPostData(); $curl->addRequestData('a', $app['pay_func']); $curl->addRequestData('trade_number', $order_info['out_trade_number']); $curl->addRequestData('total_fee', $order_info['total_fee']); $ret = $curl->request($app['request_file']); if ($ret['success'] == 1) { $this->db->update_data(array('out_trade_notify' => 1, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } else { $this->db->update_data(array('out_trade_notify' => 0, 'out_trade_notify_time' => TIMENOW), 'orders', " trade_number = '" . $order_info['trade_number'] . "'"); } } } echo 'success'; } else { echo "fail"; } } else { echo "fail"; } } else { // 服务器签名验证成功 echo "fail"; } }