/** * 针对notify_url验证消息是否是连连支付发出的合法消息 * @return 验证结果 */ function verifyNotify() { //生成签名结果 $is_notify = true; $json = new JSON(); $str = file_get_contents("php://input"); $val = $json->decode($str); if ($val) { $oid_partner = trim($val->{'oid_partner'}); $sign_type = trim($val->{'sign_type'}); $sign = trim($val->{'sign'}); $dt_order = trim($val->{'dt_order'}); $no_order = trim($val->{'no_order'}); $oid_paybill = trim($val->{'oid_paybill'}); $money_order = trim($val->{'money_order'}); $result_pay = trim($val->{'result_pay'}); $settle_date = trim($val->{'settle_date'}); $info_order = trim($val->{'info_order'}); $pay_type = trim($val->{'pay_type'}); $bank_code = trim($val->{'bank_code'}); $no_agree = trim($val->{'no_agree'}); $id_type = trim($val->{'id_type'}); $id_no = trim($val->{'id_no'}); $acct_name = trim($val->{'acct_name'}); } else { return false; } //首先对获得的商户号进行比对 if ($oid_partner != $this->llpay_config['oid_partner']) { //商户号错误 return false; } $parameter = array('oid_partner' => $oid_partner, 'sign_type' => $sign_type, 'dt_order' => $dt_order, 'no_order' => $no_order, 'oid_paybill' => $oid_paybill, 'money_order' => $money_order, 'result_pay' => $result_pay, 'settle_date' => $settle_date, 'info_order' => $info_order, 'pay_type' => $pay_type, 'bank_code' => $bank_code, 'no_agree' => $no_agree, 'id_type' => $id_type, 'id_no' => $id_no, 'acct_name' => $acct_name); if (!$this->getSignVeryfy($parameter, $sign)) { return false; } return true; }
public function returnNotify() { $llpayNotify = new LLpayNotify($this->llpay_config); $verify_result = $llpayNotify->verifyNotify(); if ($verify_result) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //请在这里加上商户的业务逻辑程序代 //——请根据您的业务逻辑来编写程序(以下代码仅作参考)—— //获取连连支付的通知返回参数,可参考技术文档中服务器异步通知参数列表 $is_notify = true; $json = new JSON(); $str = file_get_contents("php://input"); $val = $json->decode($str); $oid_partner = trim($val->{'oid_partner'}); $dt_order = trim($val->{'dt_order'}); $no_order = trim($val->{'no_order'}); $oid_paybill = trim($val->{'oid_paybill'}); $money_order = trim($val->{'money_order'}); $result_pay = trim($val->{'result_pay'}); $settle_date = trim($val->{'settle_date'}); $info_order = trim($val->{'info_order'}); $pay_type = trim($val->{'pay_type'}); $bank_code = trim($val->{'bank_code'}); $sign_type = trim($val->{'sign_type'}); $sign = trim($val->{'sign'}); ///如果同步接受操作没有处理成功 $pay = payLL::findOne(['no_order' => $no_order, 'status' => self::CONFIRM]); if ($pay) { if ($result_pay == 'SUCCESS') { //验证支付金额 if ($pay->money_order == $money_order) { //支付成功了--更新数据 $pay->status = self::SUCCESS; $pay->remark = "success"; $pay->sign_type = $sign_type; $pay->sign = $sign; $pay->oid_paybill = $oid_paybill; $pay->settle_date = $settle_date; $pay->money_lianlian = $money_order; $pay->pay_type = $pay_type; $pay->bank_code = $bank_code; $res = $pay->save(); if ($res) { $card_no = $pay->card_no; $uid = $pay->uid; $info = Info::find()->where(['member_id' => $uid])->one(); $newmoney = $info->balance; $info->balance = $newmoney + $money_order; $info->bank_card = $card_no; $info->bank_card_phone = $bank_code; $info->save(); } } else { $pay->status = self::ERROR; $pay->remark = "订单金额错误"; $pay->sign_type = $sign_type; $pay->sign = $sign; $pay->oid_paybill = $oid_paybill; $pay->settle_date = $settle_date; $pay->money_lianlian = $money_order; $pay->pay_type = $pay_type; $pay->bank_code = $bank_code; $pay->save(); } } } file_put_contents("log.txt", "异步通知 验证成功\n", FILE_APPEND); die("{'ret_code':'0000','ret_msg':'交易成功'}"); //请不要修改或删除 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } else { file_put_contents("log.txt", "异步通知 验证失败\n", FILE_APPEND); //验证失败 die("{'ret_code':'9999','ret_msg':'验签失败'}"); //调试用,写文本函数记录程序运行情况是否正常 //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录"); } }