You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

246 lines
8.8 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace Org\SqpaySDK;
use Think\Exception;
use Qiniu\json_decode;
use Think\Log;
class Sqpay
{
// H5 支付 双乾 PaymentType "UNION","ZFBZF" 云闪付
public function sq_pay($data){
/* $returnurl = empty($returnurl)?"http://".$_SERVER['HTTP_HOST']:$returnurl;//成功跳转
$notifyurl = "http://".$_SERVER['HTTP_HOST']."/callback.php/Notify/sq_callback";//通知
$ordertime =date("Ymdhms",time());
// 168885 12345678 */
$sign = md5("Amount={$data['amount']}&BillNo={$data['order_no']}&MerNo={$data['merno']}&PayType=SMZF&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$params=[
'MerNo' => $data['merno'],
'Amount'=>$data['amount'],
'BillNo'=>$data['order_no'],
'TranCode'=>"SMZF012",
'PayType'=> "SMZF",
'PaymentType'=> $data['paymenttype'],//"UNION","ZFBZF",
'MerRemark' => $data['MerRemark'],
'subject' => $data['subject'],
'NotifyURL' => $data['notifyurl'],
'ReturnURL' => '',//$data['returnurl'],
'mchAppId' => $data['mchAppId'],
'mchAppName' => $data['mchAppName'],
'deviceInfo' => $data['deviceInfo'],
'clientIp' => $data['clientIp'],
'limitPay' => 'creditCard',
'MD5info' => $sign,
];
// var_dump($params);die;
$ret = curl_post("https://scan.95epay.cn/ScanCodePayment.action", $params);
return $ret;
}
// 小程序支付 双乾
public function sq_wxsmallpay($data){
Log::write("wxpay:".serialize($_REQUEST), Log::DEBUG);
$returnurl = $data['returnurl'];//成功跳转
$notifyurl =$data['notifyurl']; //通知
$ordertime =date("Ymdhms",time());
// 168885 12345678
$sign = md5("Amount={$data['amount']}&BillNo={$data['order_no']}&MerNo={$data['merno']}&PayType=SMZF&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$params=[
'MerNo' => $data['merno'],
'isSubMerPay' => 0,
// 'subMerNo' => $data['merno'],
'appId' => $data['appId'],//'wx0ba5be5c8bb9f1b7',
'Amount'=> $data['amount'],
'BillNo'=> $data['order_no'],
'TranCode'=>"SMZF010",
'PayType'=> "SMZF",
'PaymentType'=> "WXZF",
'MerRemark' => $data['MerRemark'],
'subject' => $data['subject'],
'userId' => $data['userId']?$data['userId']:'oqFwC5TRQX1wpM8KfBQHy5FI6yJM',//'oqFwC5TRQX1wpM8KfBQHy5FI6yJM',
'NotifyURL' => $notifyurl,
'MD5info' => $sign,
];
$ret = curl_post("https://scan.95epay.cn/ScanCodePayment.action", $params);
return json_decode($ret, true);
}
/*
* 'cardType' => string 'CC' (length=2) DC为储蓄卡CC为信用卡
'bank' => string 'CMB' (length=3)
'key' => string '1567737106107-2456-11.34.191.208-899687252' (length=42)
'messages' =>
array (size=0)
empty
'validated' => boolean true
'stat' => string 'ok' (length=2)
*/
private function getbankinfo($cardNo) {
$url = "https://ccdcapi.alipay.com/validateAndCacheCardInfo.json";
$r = curl_post($url, array('cardNo' => $cardNo, 'cardBinCheck' => 'true', '_input_charset' => 'utf-8'));
$r = (json_decode($r, true));
return $r;
}
/*
* 查询用户银行卡信息的签约状态
*/
public function contract_status($data) {
$url = "https://fastpay.95epay.cn/pay/querySignResult.action";
// $url = "http://218.4.234.150:9600/pay/querySignResult.action";
$sign = md5("cardNo={$data['cardNo']}&custName={$data['custName']}&idNo={$data['idNo']}&merNo={$data['merNo']}&payType=XYPAY&phoneNo={$data['phoneNo']}&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$param = array(
'merNo' => $data['merNo'],
'custName' => $data['custName'],
'phoneNo' => $data['phoneNo'],
'cardNo' => $data['cardNo'],
'idNo' => $data['idNo'],
'payType' => 'XYPAY',
'payAmount' => $data['payAmount'],
'MD5Info' => $sign,
);
$ret = curl_post($url, $param);
return json_decode($ret, true);
}
/*
* 协议支付发送短信
*/
public function protocol_pay_send_sms($data) {
$url = "https://fastpay.95epay.cn/pay/realnameAuth.action";
/* $url = "http://218.4.234.150:9600 /realnameAuth.action";
$data['merNo'] = 168885;
$data['secret'] = 12345678; */
$data['transDate'] = date('Ymd');
$data['transTime'] = date('His');
$bankInfo = $this->getbankinfo($data['cardNo']);
$data['cardType'] = $bankInfo['cardType'] == 'CC' ? 2: 1;
if ($data['cardType'] == 2) {
return array(
'resFlag' => 'fail',
'resMess' => '不支持信用卡支付'
);
}
// pp($bankInfo);
$sign = md5("merNo={$data['merNo']}&custName={$data['custName']}&phone={$data['phoneNo']}&cardNo={$data['cardNo']}&idNo={$data['idNo']}&idType=0&payAmount={$data['payAmount']}&merOrderNo={$data['merOrderNo']}&cardType={$data['cardType']}&year=&month=&CVV2=&transDate={$data['transDate']}&transTime={$data['transTime']}&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$param = array(
'merNo' => $data['merNo'],
'custName' => $data['custName'],
'cardNo' => $data['cardNo'],
'phone' => $data['phoneNo'],
'idNo' => $data['idNo'],
'idType' => '0',
'payAmount' => $data['payAmount'],
'merOrderNo' => $data['merOrderNo'],
'bankCode' => $bankInfo['bank'],
'payType' => 'XYPAY',
'cardType' => $data['cardType'],
'NotifyURL' => $data['NotifyURL'],
'transDate' => $data['transDate'],
'transTime' => $data['transTime'],
'purpose' => $data['purpose'],
'MD5Info' => $sign,
);
$ret = curl_post($url, $param);
return json_decode($ret, true);
}
/**
* 交易
*/
// 快捷支付 双乾
public function shortcut_pay($data){
$url = "https://fastpay.95epay.cn/pay/hfDaikouTrade.action";
/* $url = "http://218.4.234.150:9600 /realnameAuth.action";
$data['merNo'] = 168885;
$data['secret'] = 12345678; */
$notifyurl = "http://".'api.jianghuifa.cn'."/callback.php/Notify/sq_callback";//通知
$data['NotifyURL'] = $data['NotifyURL'] ? $data['NotifyURL'] : $notifyurl;
$bankInfo = $this->getbankinfo($data['cardNo']);
$data['cardType'] = $bankInfo['cardType'] == 'CC' ? 2: 1;
// pp($bankInfo);
$sign = md5("merNo={$data['merNo']}&merOrderNo={$data['merOrderNo']}&custName={$data['custName']}&phone={$data['phoneNo']}&cardNo={$data['cardNo']}&idType=0&idNo={$data['idNo']}&payAmount={$data['payAmount']}&bankCode={$bankInfo['bank']}&NotifyURL={$data['NotifyURL']}&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$param = array(
'merNo' => $data['merNo'],
'merOrderNo' => $data['merOrderNo'],
'cardNo' => $data['cardNo'],
'custName' => $data['custName'],
'idType' => '0',
'idNo' => $data['idNo'],
'phone' => $data['phoneNo'],
'purpose' => $data['purpose'],
'payAmount' => $data['payAmount'],
'bankCode' => $bankInfo['bank'],
'payType' => 'XYPAY',
'NotifyURL' => $data['NotifyURL'],
'txnTime' => $data['txnTime'],
'smsCode' => $data['smsCode'],
'MD5Info' => $sign,
);
$ret = curl_post($url, $param);
return json_decode($ret, true);
}
/*
* 认证/签约
*/
public function sign_contract($data) {
$url = "https://fastpay.95epay.cn/pay/identifyAuthAndSign.action";
/* $url = "http://218.4.234.150:9600/pay/identifyAuthAndSign.action";
$data['merNo'] = 168885;
$data['secret'] = 12345678; */
$data['transDate'] = date('Ymd');
$data['transTime'] = date('His');
$bankInfo = $this->getbankinfo($data['cardNo']);
$data['cardType'] = $bankInfo['cardType'] == 'CC' ? 2: 1;
$sign = md5("authMsg={$data['authMsg']}&bankCode={$bankInfo['bank']}&cardNo={$data['cardNo']}&cardType={$data['cardType']}&custName={$data['custName']}&custType={$data['custType']}&idNo={$data['idNo']}&idType=0&merNo={$data['merNo']}&payType=XYPAY&phoneNo={$data['phoneNo']}&reqMsgId={$data['reqMsgId']}&".strtoupper(md5($data['secret'])));
$sign = strtoupper($sign);
$param = array(
'merNo' => $data['merNo'],
'custName' => $data['custName'],
'phoneNo' => $data['phoneNo'],
'cardNo' => $data['cardNo'],
'bankCode' => $bankInfo['bank'],
'idNo' => $data['idNo'],
'idType' => 0,
'reqMsgId' => $data['reqMsgId'],
'cardType' => $data['cardType'],
'authMsg' => $data['authMsg'],
'custType' => $data['custType'], // 01认证02签约
'payType' => 'XYPAY',
'MD5Info' => $sign,
);
$ret = curl_post($url, $param);
return json_decode($ret, true);
}
}