예제 #1
0
 public function send_pay()
 {
     $config = $this->config;
     $p1_MerId = $config['id'];
     //"10001126856";
     $merchantKey = $config['key'];
     //"69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";
     $logName = $config['error_log'] = "YeePay_HTML.log";
     $reqURL_onLine = "https://www.yeepay.com/app-merchant-proxy/node";
     //产品通用接口请求地址
     $p0_Cmd = "Buy";
     //支付请求,固定值"Buy" .
     $p9_SAF = "0";
     //送货地址,默认为0
     //	商家设置用户购买商品的支付信息.
     //易宝支付平台统一使用GBK/GB2312编码方式,参数如用到中文,请注意转码
     //	商户订单号,选填.
     //若不为"",提交的订单号必须在自身账户交易中唯一;为""时,易宝支付会自动生成随机的商户订单号.
     $p2_Order = $config['code'];
     //	支付金额,必填.
     //单位:元,精确到分.
     $p3_Amt = $config['money'];
     //	交易币种,固定值"CNY".
     $p4_Cur = "CNY";
     //	商品名称
     //用于支付时显示在易宝支付网关左侧的订单产品信息.
     $p5_Pid = htmlspecialchars(trim($config['title']));
     //iconv("UTF-8","GBK","你妹xxxx")
     //	商品种类
     $p6_Pcat = '';
     //	商品描述
     $p7_Pdesc = '';
     //	商户接收支付成功数据的地址,支付成功后易宝支付会向该地址发送两次成功通知.
     $p8_Url = $config['NotifyUrl'];
     //	商户扩展信息
     //商户可以任意填写1K 的字符串,支付成功时将原样返回.
     $pa_MP = '';
     //	支付通道编码
     //默认为"",到易宝支付网关.若不需显示易宝支付的页面,直接跳转到各银行、神州行支付、骏网一卡通等支付页面,该字段可依照附录:银行列表设置参数值.
     if ($config['pay_bank'] == 'DEFAULT') {
         $pd_FrpId = '';
     } else {
         $pd_FrpId = $config['pay_bank'];
     }
     //	应答机制
     //默认为"1": 需要应答机制;
     $pr_NeedResponse = "1";
     //调用签名函数生成签名串
     iconv_set_encoding("internal_encoding", "UTF-8");
     iconv_set_encoding("output_encoding", "GBK");
     // 开始缓存
     ob_start("ob_iconv_handler");
     include dirname(__FILE__) . '/yeepay/yeepayCommon.class.php';
     $yeepayCommon = new yeepayCommon();
     $yeepayCommon->config = $config;
     $hmac = $yeepayCommon->getReqHmacString($p2_Order, $p3_Amt, $p4_Cur, $p5_Pid, $p6_Pcat, $p7_Pdesc, $p8_Url, $pa_MP, $pd_FrpId, $pr_NeedResponse);
     include dirname(__FILE__) . '/yeepay/yeepay_send.tpl.php';
     ob_end_flush();
     exit;
 }
예제 #2
0
 public function houtai()
 {
     $pay_type = $this->db->GetOne("SELECT * from `@#_pay` where `pay_class` = 'yeepay' and `pay_start` = '1'");
     $pay_type_key = unserialize($pay_type['pay_key']);
     $key = $pay_type_key['key']['val'];
     //支付KEY
     $id = $pay_type_key['id']['val'];
     //支付商号ID
     $config = array("id" => $id, "key" => $key, "error_log" => 'YeePay_HTML.log');
     $yeepayCommon = new yeepayCommon();
     $yeepayCommon->config = $config;
     //解析返回参数.
     $return = $yeepayCommon->getCallBackValue($r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType, $hmac);
     //判断返回签名是否正确(True/False)
     $bRet = $yeepayCommon->CheckHmac($r0_Cmd, $r1_Code, $r2_TrxId, $r3_Amt, $r4_Cur, $r5_Pid, $r6_Order, $r7_Uid, $r8_MP, $r9_BType, $hmac);
     $out_trade_no = $r6_Order;
     $this->out_trade_no = $out_trade_no;
     if (!$out_trade_no) {
         echo "返回参数错误";
         exit;
     }
     //校验码正确.
     if ($bRet) {
         if ($r1_Code == "1") {
             //需要比较返回的金额与商家数据库中订单的金额是否相等,只有相等的情况下才认为是交易成功.
             //并且需要对返回的处理进行事务控制,进行记录的排它性处理,在接收到支付结果通知后,判断是否进行过业务逻辑处理,不要重复进行业务逻辑处理,防止对同一条交易重复发货的情况发生.
             if ($r9_BType == "1") {
                 $ret = $this->yeepay_chuli();
                 $this->qiantai();
                 exit;
             } elseif ($r9_BType == "2") {
                 //如果需要应答机制则必须回写流,以success开头,大小写不敏感.
                 $ret = $this->yeepay_chuli();
                 if ($ret == '已付款' || $ret == '充值完成' || $ret == '商品购买成功') {
                     echo 'success';
                     exit;
                 }
                 if ($ret == '充值失败' || $ret == '商品购买失败') {
                     echo $ret;
                     exit;
                 }
             }
         }
     } else {
         echo "交易信息被篡改";
     }
 }