126 lines
4.6 KiB
PHP
126 lines
4.6 KiB
PHP
<?php
|
|
|
|
namespace app\api\controller;
|
|
require_once ROOT_PATH . "/../vendor/hf/BsPayDemo/loader.php";
|
|
require_once ROOT_PATH . "/../vendor/hf/BsPaySdk/init.php";
|
|
use app\common\basics\Api;
|
|
use BsPaySdk\core\BsPay;
|
|
use BsPaySdk\config\MerConfig;
|
|
|
|
class Huifu extends Api
|
|
{
|
|
|
|
public function payTest()
|
|
{
|
|
$config = new BsPay();
|
|
$merConfig = $config->getConfig();
|
|
// 2.组装请求参数
|
|
$paramsInfo = array();
|
|
// 请求日期
|
|
$paramsInfo["req_date"] = "20241101";
|
|
// 请求流水号
|
|
$paramsInfo["req_seq_id"] = "rQ20241101153502883338";
|
|
// 商户号
|
|
$paramsInfo["huifu_id"] = "6666000109133323";
|
|
// 商品描述
|
|
$paramsInfo["goods_desc"] = "测试商品";
|
|
// 交易类型
|
|
$paramsInfo["trade_type"] = "T_MINIAPP";
|
|
// 交易金额
|
|
$paramsInfo["trans_amt"] = "0.10";
|
|
// 交易有效期
|
|
$paramsInfo["time_expire"] = "20250518235959";
|
|
// 微信参数集合
|
|
$paramsInfo["wx_data"] = "{\"sub_appid\":\"wxdfe9a5d141f96685\",\"sub_openid\":\"o8jhotzittQSetZ-N0Yj4Hz91Rqc\",\"detail\":{\"cost_price\":\"43.00\",\"receipt_id\":\"20220628132043853798\",\"goods_detail\":[{\"goods_id\":\"6934572310301\",\"goods_name\":\"太龙双黄连口服液\",\"price\":\"43.00\",\"quantity\":\"1\",\"wxpay_goods_id\":\"12235413214070356458058\"}]}}";
|
|
// 是否延迟交易
|
|
$paramsInfo["delay_acct_flag"] = "N";
|
|
// 分账对象
|
|
$paramsInfo["acct_split_bunch"] = "{\"acct_infos\":[{\"div_amt\":\"0.10\",\"huifu_id\":\"6666000109133323\"}]}";
|
|
// 传入分账遇到优惠的处理规则
|
|
$paramsInfo["term_div_coupon_type"] = "0";
|
|
// 禁用信用卡标记
|
|
$paramsInfo["limit_pay_type"] = "NO_CREDIT";
|
|
// 场景类型
|
|
$paramsInfo["pay_scene"] = "02";
|
|
// 备注
|
|
$paramsInfo["remark"] = "string";
|
|
// 安全信息
|
|
$paramsInfo["risk_check_data"] = "{\"ip_addr\":\"180.167.105.130\",\"base_station\":\"192.168.1.1\",\"latitude\":\"33.3\",\"longitude\":\"33.3\"}";
|
|
// 设备信息
|
|
$paramsInfo["terminal_device_data"] = "{\"device_type\":\"1\",\"device_ip\":\"10.10.0.1\",\"device_gps\":\"192.168.0.0\",\"devs_id\":\"SPINTP357338300264411\"}";
|
|
// 异步通知地址
|
|
$paramsInfo["notify_url"] = "http://www.baidu.com";
|
|
|
|
// 3. 发起API调用
|
|
$bspay = new BsPay();
|
|
$result = $bspay->post("v2.trade.payment.jspay", $paramsInfo, '', 'default');
|
|
if (!$result || $result->isError()) { //失败处理
|
|
var_dump($result->getErrorInfo());
|
|
} else { //成功处理
|
|
var_dump($result);
|
|
}
|
|
}
|
|
|
|
public function test($user_id=1){
|
|
$out = "dlh".time().$user_id;
|
|
$data = [
|
|
"sys_id"=>"6666000156739560",
|
|
"product_id"=>"PAYUN",
|
|
"data"=>array(
|
|
"req_date"=>date("Y-m-d"),
|
|
"req_seq_id"=>$out,
|
|
"huifu_id"=>"6666000156739560",
|
|
"goods_desc"=>"测试商品",
|
|
"trade_type"=>"T_MINIAPP",
|
|
"trans_amt"=>"1.00"
|
|
),
|
|
"wx_data"=>array(
|
|
"sub_appid"=>"wx586d77b9edb0636d",
|
|
"sub_openid"=>"ouOMm41xnIKqoZ66ygwJa-qJQpgw"
|
|
|
|
)
|
|
];
|
|
$d =$this->ASCII($data);
|
|
$merConfig = new MerConfig();
|
|
$data['sign'] = $this->sign($data,$merConfig->rsa_huifu_public_key);
|
|
print_r("<pre>");
|
|
var_dump($data);
|
|
$b = json_encode($data,true);
|
|
var_dump($b);
|
|
$bspay = new BsPay();
|
|
$result = $bspay->post("v2.trade.payment.jspay", $paramsInfo, '', 'default');
|
|
if (!$result || $result->isError()) { //失败处理
|
|
var_dump($result->getErrorInfo());
|
|
} else { //成功处理
|
|
var_dump($result);
|
|
}
|
|
var_dump($result);
|
|
}
|
|
public function sign($param,$key_pem)
|
|
{
|
|
$sha256 = hash("sha256", $param);
|
|
$privateKey = openssl_pkey_get_public($key_pem); //检测是否公钥
|
|
openssl_public_encrypt($sha256, $sign, $privateKey); //公钥加密
|
|
$sign = base64_encode($sign);
|
|
return $sign;
|
|
}
|
|
function ASCII($params=array()){
|
|
// ksort($params);
|
|
// reset($params);
|
|
$str = "";
|
|
$t = array();
|
|
foreach($params as $key=>$value){
|
|
if(is_array($value)){
|
|
$b = json_encode($value,true);
|
|
$t[] = $key."=".$b;
|
|
}else{
|
|
$t[] = $key."=".$value;
|
|
}
|
|
|
|
}
|
|
|
|
$str = implode("&",$t);
|
|
// $str = http_build_query($params,'','&');
|
|
return $str;
|
|
}
|
|
} |