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; }
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 "交易信息被篡改"; } }