合利宝刷卡接口

1、下列类中缺少curl_post函数

2流程

1、手机端绑定银行卡身份信息后;上传资质
2、合立包后台,选择子商户,点击查询,找到对应的商户;开通产品 可以走接口
3.1、店长开通产品:扫码产品;开通微信主扫和支付宝主扫;开通结算 
3.2、店员和合伙人股东开通产品: 开通结算
4、发送消息给店长;店长需要扫下面二维码开通绑定商户; 绑定后,即可进行收银台扫码操作;
	微信指导: https://pay.weixin.qq.com/static/help_guide/business_registration.shtml
	支付宝指导: https://opendocs.alipay.com/p/03rnuz

3、下列参数中,有些需要仔细阅读;

例如:

  1. 上传资质的订单号要与客户进件的订单号一致
  2. 开通产品的部分参数要与扫码支付的部分参数一致
  3. 下面的每个接口的商户商编分为子商户商编和平台商户商编;平台商户商编可以设置公共参数;签名也可以设置公共参数
<?php
/**
 *  @version   / 合利宝刷卡接口
 *  @author yishuihan$(1015571416@qq.com)
 *   @datetime    2018-03-08 15:31:05
 *   @return 
 */
 
class Helibao {
	public $test_url;
	public $product_url;
	public $scan_test;
	public function __construct(){
		$this->test_url='http://test.trx.helipay.com/trx/merchantEntry/interface.action';
		$this->product_url='http://pay.trx.helipay.com/trx/merchantEntry/interface.action';
		$this->scan_test='http://test.trx.helipay.com/trx/app/interface.action';
	}
	/**
	 * 商户进件
	 * @return [type] [description]
	 */
	public function income(){ //register
		$arr=array(
			'firstClassMerchantNo'=>'370983199109202832',	//平台商商编是	String(16)	C1800000002	平台商编号
			'orderNo'=>make_rand_code(),	//商户订单号	是	String(50)	p_20170731163713	商户系统内部订单号,要求50字符以内,同一商户号下订单号唯一
			'signName'=>'许成成',	//子商户签约名	 是	String(150)	测试子商户01	签约名
			'showName'=>'水寒科技',	//展示名(收银台展示名)	是	String(100)	测试子商户01	用于收银台的展示名
			// 'webSite'=>'http://7ysh.com',//网站网址		否	String(150)	http://www.merchant.com	商户网站地址
			// 'accessUrl'=>'',//接入地址		否	String(150)	http://www.merchant.com	接入地址,空
			'merchantType'=>'PERSON', //子商户类型		是	String(20)	企业商户	见附录5.7
			'legalPerson'=>'*****',//法人名字		是	String(20)	张三	法人名字
			'legalPersonID'=>'*****',//法人身份证号		是	String(30)	440101199201010171	身份证
			'orgNum'=>'*****',//组织机构代码		是	String(30)	445221144522119998	机构号
			'businessLicense'=>'*****',//营业执照号		是	String(30)		执照号
			// 'province'=>'150000',//子商户所在省份		否	String(15)	广东省	省份
			// 'city'=>'150900',//子商户所在城市		否	String(15)	广州市	城市
			'regionCode'=>'150906',//区县编码		是	String(8)	010100	区县编码(见附件行业编码及地区编码表.zip)
			'address'=>'山东省肥城市*****',//通讯地址	address	是	String(150)		通讯地址
			'linkman'=>"*****",//联系人		是	String(15)	李四	联系人
			'linkPhone'=>"********",//联系电话	linkPhone	是	String(20)		联系电话
			'email'=>"1*****6@qq.com",//联系邮箱		是	String(50)	2862277315@qq.com	用户邮箱
			// 'bindMobile'=>'17569615504',//绑定手机		否	String(25)	14718090064	绑定手机号
			// 'servicePhone'=>'',//客服联系电话		否	String(20)	14718090064	用户支付后有疑问的, 可通过此号码进行咨询,如不填会上送默认电话,建议必填商户自有客服电话
			'bankCode'=>"102100000048",//结算卡联行号		是	String(13)	102100000048	联行号
			'accountName'=>"*****",//开户名		是	String(50)	张三	开卡姓名
			'accountNo'=>"*****",//开户账号		是	String(30)	907190100001000014	卡账号
			'settleBankType'=>"TOPRIVATE",//结算卡类型		是	String(20)	对公	见附录5.9
			'settlementPeriod'=>"D0",//结算类型		是	String(20)	T1	见附录5.10
			'settlementMode'=>"AUTO",//结算方式		是	String(20)	AUTO	见附录5.15
			// 'settlementRemark'=>'自动结算',//结算备注		否	String(20)	合利宝结算款	自动结算 / 自主结算 备注信息
			'merchantCategory'=>'GROUP_PURCHASE',//经营类别		是	String(35)		见附录5.5
			// 'industryTypeCode'=>'',//行业类型编码		否	String(10)	141	见附件(行业编码及地区编码表.zip)个人商户类型不需填写,其他类型必传
			'authorizationFlag'=>'true',//授权使用平台商秘钥		是	Boolean true	true代表授权,false代表不授权
			// 'unionPayQrCode'=>'',//银联二维码		否	String(100)	子商户若需绑定银联二维码,可填写
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
		$post['interfaceName']='register';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			echo json_encode($res);die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo json_encode($res);die;
		}
	}
	/**
	 * 入网进件查看查询
	 * @return [type] [description]
	 */
	public function registerQuery(){
		$arr=array(
			'orderNo'=>'2GLD1SSS',//是	String(50)	p_20170731163713	进件下单时的订单号
			'firstClassMerchantNo'=>'C1800193823',//平台商商编		是	String(16)	C1800000002	平台商编号
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
		$post['interfaceName']='registerQuery';
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			// echo json_encode($res);die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo json_encode($res);die;
		}
	}
	/**
	 * 开通产品扫码
	 * @return [type] [description]
	 */
	public function open_scan(){
		$arr=array(
			'productType'=>'APPPAY',//产品类型		是	String(20)	APPPAY	扫码产品
			'firstClassMerchantNo'=>'C1800193823',//平台商商编		是	String(16)	C1800000002	平台商编号
			'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800001025	进件审核通过后才有的商户号
			'payType'=>'SCAN',//支付类型		是	String(20)		见附录5.11
			'appPayType'=>'WXPAY',//客户端类型		是	String(20)		见附录5.2
			'value'=>'0.25',//费率		否	Number(10.2)	0.01	单位(%或元),小数后两位
			'minFee'=>'0.01',//最低费率金额		否	Number(10.2)	0.01	单位(元),小数后两位
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';

		$post['interfaceName']='openProduct';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		var_dump($res);
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			$result=json_decode($res,true);
			var_dump($result);die;
		}
	}
	/**
	 * 产品扫码查询
	 * @return [type] [description]
	 */
	public function productQuery(){
		$arr=array(
			'productType'=>'APPPAY',//产品类型		是	String(20)	APPPAY	扫码产品
			'firstClassMerchantNo'=>'C1800193823',//平台商商编		是	String(16)	C1800000002	平台商编号
			'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800001025	进件审核通过后才有的商户号
			'payType'=>'SCAN',//支付类型		是	String(20)		见附录5.11
			'appPayType'=>'WXPAY',//客户端类型		是	String(20)		见附录5.2
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';

		$post['interfaceName']='openProduct';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		// var_dump($res);
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			echo $res;die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo $res;die;
		}
	}
	/**
	 * 资质上传
	 * @return [type] [description]
	 */
	public function uploadCredential(){

		if(1){
			$file_url='http://wallet.dev.com/uploads/aptitude/20180310/a68caa8d66816c946af1a99d55e29e75.jpg';
			$file_info = file_get_contents($file_url);
			// $file = request()->file('file');
			// var_dump($file);die;
			// $tool=new Tool();
   //    	    $images=$tool->uploads($file, 'aptitude');
   //    	    $images=json_decode($images,true);
   //    	    if($images['code']==200){
   //    	    	$img_url=$images['data']['link'];
   //    	    	// echo $img_url;die;
   //    	    }else{
   //    	    	exit(json_encode(['code'=>101,'msg'=>'上传失败']));
   //    	    }
			$arr=array(
				'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800001025	进件审核通过后才有的商户号
				'orderNo'=>make_rand_code(),//请求单号		是	String(30)	P_20171022123bsff23	
				'credentialType'=>'FRONT_OF_ID_CARD',//资质类型	credentialType	是	String(30)	BUSINESS_LICENSE	见附录5.2
				'fileSign'=>hash('md5',$file_info),//资质文件 HASH 值	fileSign	是	String(32)	c81e728d9d4c2f636f067f89cc14862c	文件 MD5 校验码
			);
		    $file_path=__DIR__.'/1.jpg';
		    // echo $file_path;die;
		    // file_put_contents($file_path, $file_info);
			$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
			$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
			$post['interfaceName']='uploadCredential';
			// $post['body']=$this->get_body($arr);
			// $post['sign']=$this->get_sign($post['body']);
			$post['merchantNo']='C1800193823';
			$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE),$encKey);
			$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
			// $post['file']=$file;
			// $file = new \CURLFile($upload['file'], $upload['type'], $upload['name']);
			$file = new \CURLFile($file_path);
			// var_dump($file);die;
            // $post[$upload['get_name']] = $file;
            $post['file'] = $file;
			// print_r($file);die;
			$res=curl_post('http://test.trx.helipay.com/trx/merchantEntry/upload.action','post',$post,'multipart/form-data');
			unlink ($file_path);
			// echo $res;die;
			$res=json_decode($res,true);
			if($res['code']=='0000'){
				$res=$this->decrypt($res['data'],$encKey);
				// $result=json_decode($res,true);
				echo $res;die;
			}
			echo $red;die;
		}else{
			return view('/Userurl/uploadCredential');
		}
	}
	/**
	 * 子商户资质上传结果查询接口
	 * @return [type] [description]
	 */
	public function credentialQuery(){
		$arr=array(
			'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800001025	进件审核通过后才有的商户号
			'orderNo'=>make_rand_code(),//请求单号		是	String(30)	P_20171022123bsff23	
			'credentialType'=>'FRONT_OF_ID_CARD',//资质类型		是	String(30)	BUSINESS_LICENSE	见附录5.1
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
		$post['interfaceName']='credentialQuery';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		// var_dump($res);
		if($res['code']=='0000'){
			$res=$this->decrypt($res['data'],$encKey);
			echo $res;die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo $res;die;
		}
	}
	/**
	 * 结算卡信息变更
	 * @return [type] [description]
	 */
	public function settlementCardAlteration(){
		$arr=array(
			'orderNo'=>make_rand_code(),//订单号		是	String(50)	p_20170726140544	变更请求订单号
			'merchantNo'=>'',//子商户编号		是	String(16)	C1800000002	进件审核通过后才有的子商户编号
			'accountName'=>'',//开户人名称		是	String(50)	张三	开户人名称
			'updateAccountName'=>'',//变更后开户人名称		否	String(50)	张三	变更后开户人名称,输入该字段需上传结算账户指定书
			'accountNo'=>'',//原结算卡号		是	String(30)	9071901000010000053423	原结算卡号
			'updateAccountNo'=>'',//变更后结算卡号		否	String(30)	9071901000010000053423	变更后结算卡号
			'settleBankType'=>'',//结算卡类型		是	String(20)	TOPRIVATE	见附录5.9
			'updateSettleBankType'=>'',//变更后结算卡类型		否	String(20)	TOPRIVATE	见附录5.9
			'bankCode'=>'',//结算卡联行号		是	String(20)	104100004048	结算卡联行号
			'updateBankCode'=>'',//变更后结算卡联行号		否	String(20)	104100004048	变更后结算卡联行号
			'merchantEntryAlterationType',//变更类型		是	String(20)	SETTLE_BANKCARD	见附录5.18
			'file'=>'',//结算账户指定书		否	Multipart File		变更开户人名称或结算卡号时必须上传
			'frontOfIdCard'=>'',//持卡人身份证正面照		否	Multipart File		变更开户人名称或结算卡号时并且结算卡类型对私必须上传
			'backOfIdCard'=>'',//持卡人身份证反面照		否	Multipart File		变更开户人名称或结算卡号时并且结算卡类型对私必须上传
			'handheldOfIdCard'=>'',//持卡人手持身份证照		否	Multipart File		变更开户人名称或结算卡号时并且结算卡类型对私必须上传
			'handheldOfBankCard'=>'',//持卡人手持银行卡照		否	Multipart File		变更开户人名称或结算卡号时并且结算卡类型对私必须上传
			'accountOpeningCertificate'=>'',//银行开户证明		否	Multipart File		变更开户人名称或结算卡号时并且结算卡类型对公必须上传
			'fileSign'=>'',//结算账户指定书文件 HASH 值		否	String(32)	c81e728d9d4c2f636f067f89cc14862c	结算账户指定书上传时必填,文件 MD5 校验码
			'frontOfIdCard'=>'',//持卡人身份证正面照文件 HASH 值	 FileSign	否	String(32)	c81e728d9d4c2f636f067f89cc14862c	持卡人身份证正面照上传时必填,文件 MD5 校验码
			'backOfIdCard'=>'',//持卡人身份证反面照文件 HASH 值	 FileSign	是	String(32)	c81e728d9d4c2f636f067f89cc14862c	持卡人身份证反面照上传时必填,文件 MD5 校验码
			'handheldOfIdCardFileSign'=>'',//持卡人手持身份证照文件 HASH 值		是	String(32)	c81e728d9d4c2f636f067f89cc14862c	持卡人手持身份证照上传时必填,文件 MD5 校验码
			'handheldOfBankCardFileSign'=>'',//持卡人手持银行卡照文件 HASH 值		是	String(32)	c81e728d9d4c2f636f067f89cc14862c	持卡人手持银行卡照上传时必填,文件 MD5 校验码
			'accountOpeningCertificate'=>'',//银行开户证明文件 HASH 值	 FileSign	是	String(32)	c81e728d9d4c2f636f067f89cc14862c	银行开户证明上传时必填,文件 MD5 校验码
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
		$post['interfaceName']='infoAlteration';
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		// echo json_encode($res);die;
		if($res['code']=='0000'){
			$res=$this->decrypt($res['data'],$encKey);
			echo $res;die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo json_encode($res);die;
			echo $res;die;
		}
	}
	/**
	 * 商户信息变更
	 * @return [type] [description]
	 */
	public function infoAlteration(){
		$arr=array(
			'orderNo'=>make_rand_code(),//订单号		是	String(50)	p_20170726140544	变更请求订单号
			'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800000002	子商户编号
			'merchantEntryAlterationType'=>'MERCHANT_CREDENTIAL',//变更类型		是	String(20)	MERCHANT_INFO	见附录5.18
			'updateShowName'=>"许成成",//变更展示名		是	String(100)	张三	
			'updateLinkPhone'=>'17569615504',//变更客服联系电话		是	String(20)	18812345678	
		);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';

		$post['interfaceName']='infoAlteration';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE), $encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		$res=$this->send_request($this->test_url,$post);
		// echo json_encode($res);die;
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			echo $res;die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo json_encode($res);die;
			echo $res;die;
		}
	}
	/**
	 * 资质变更
	 * @return [type] [description]
	 */
	public function uploadAlterationAptitude(){
		$file_url='http://wallet.dev.com/uploads/aptitude/20180310/a68caa8d66816c946af1a99d55e29e75.jpg';
		$file_info = file_get_contents($file_url);
		$arr=array(
			'orderNo'=>make_rand_code(),//订单号		是	String(50)	p_20170726140544	变更请求订单号
			'merchantNo'=>'E1800195861',//子商户编号		是	String(16)	C1800000002	子商户编号
			'credentialType'=>'FRONT_OF_ID_CARD',//资质类型		是	String(20)	BUSINESS_LICENSE	见附录5.21
			'merchantEntryAlterationType'=>'MERCHANT_CREDENTIAL',//见附录5.18
			'fileSign'=>hash('md5',$file_info),//资质文件 HASH 值		是	String(32)	c81e728d9d4c2f636f067f89cc14862c	文件 MD5 校验码
		);
		$file_path=__DIR__.'/'.time().'.jpg';
	    // echo $file_path;die;
	    // file_put_contents($file_path, $file_info);
		$encKey='lENn7v8OZ1z7WdlMKMgu5KNj';
		$signKey='blYXETCKznBGIcdEWlwgg1WeA8TVGuA6';
		$post['interfaceName']='uploadAlterationAptitude';
		// $post['body']=$this->get_body($arr);
		// $post['sign']=$this->get_sign($post['body']);
		$post['merchantNo']='C1800193823';
		$post['body']=$this->encrypt(json_encode($arr,JSON_UNESCAPED_UNICODE),$encKey);
		$post['sign']=md5($post['body']."&".$post['merchantNo']."&".$signKey);
		// $post['merchantCredentialType']='FRONT_OF_ID_CARD';
		$file = new \CURLFile($file_path);
        $post['file'] = $file;
		// print_r($post);die;
		$res=curl_post('http://test.trx.helipay.com/trx/merchantEntry/upload.action','post',$post,'multipart/form-data');
		unlink ($file_path);
		// echo $res;die;
		$res=json_decode($res,true);
		if($res['code']=='0000'){
			$data='KHh+C5F4fAoDOFJ9TUiAzh2kw6wPLT5wOdExS8C/WmHznini7URbXU/k6mMBPMagp4LUin03Kjw93JMWGqLvbqPuDL27Wr3zdXyN4qGSmaU=';
			$res=$this->decrypt($data,$encKey);
			echo $res;die;
			$result=json_decode($res,true);
			var_dump($result);die;
		}else{
			echo json_encode($res);die;
			echo $res;die;
		}
	}
	/**
	 * 扫码支付
	 * @return [type] [description]
	 */
	public function scan_pay(){
		$params=array(
			'P1_bizType'=> "AppPay",
			'P2_orderId'=>make_rand_code(),//商户订单号		是	String(50)	p_20170302185347	商户系统内部订单号,要求50字符以内,同一商户号下订单号唯一
			'P3_customerNumber'=>"E1800195861",//商户编号		是	String(15)	C1800000002	合利宝分配的商户号
			'P4_payType'=>'SCAN',//支付类型		是	String(15)	SCAN	SWIPE:刷卡(被扫)SCAN:扫码(主扫)
			'P5_orderAmount'=>'10',//交易金额		是	Number(10,2)	0.01	订单金额,以元为单位,最小金额为0.01
			'P6_currency'=>"CNY",//币种类型		是	String(30)	CNY	CNY:人民币
			'P7_authcode'=>'1',//授权码		是	String(50)		payType为刷卡(被扫)时传入一组字符串(付款码),主扫支付类型传入1即可
			'P8_appType'=>'ALIPAY',//客户端类型		是	String(20)	WXPAY	ALIPAY:支付宝WXPAY:微信UNIONPAY:银联JDPAY:京东钱包QQPAY:QQ钱包
			'P9_notifyUrl'=>'http://wallet.test.xijiakeji.com/api/Test/paycallback',//通知回调地址		是	String(300)	http://wap.helipay.com/notify.php	异步接收合利宝支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
			'P10_successToUrl'=>'',//成功跳转URL		否	String(300)	http://wap.helipay.com/success.php	支付完成后,展示支付结果的页面地址(暂不用)
			'P11_orderIp'=>"127.0.0.1",//商户IP		是	String(20)	192.168.10.1	用户下单IP
			'P12_goodsName'=>'三星s9',//商品名称		是	String(128)	Iphone7	商品名称
			'P13_goodsDetail'=>"三星手机",//商户描述		否	String(255)	Iphone7	对交易或商品的描述
			'P14_desc'=>"我是备注",//备注		否	String(100)	备注	订单备注信息,原样返回
		);
		$signKey="E2ASpz3kPCZW3HJVeoQTqj0IOwMSR0F8";
		$str=$this->buildQueryString($params);
		$source=$str."&".$signKey;
		$sign= md5($source);
        $url = "http://test.trx.helipay.com/trx/app/interface.action";
        $params['sign']=$sign;
        $res=curl_post($url,'post',$params,0);
		echo $res;die;
	}
	public function test(){
		$params=array(
			'P1_bizType'=> "AppPay",
			'P2_orderId'=>make_rand_code(),//商户订单号		是	String(50)	p_20170302185347	商户系统内部订单号,要求50字符以内,同一商户号下订单号唯一
			'P3_customerNumber'=>"E1800195861",//商户编号		是	String(15)	C1800000002	合利宝分配的商户号
			'P4_payType'=>'SCAN',//支付类型		是	String(15)	SCAN	SWIPE:刷卡(被扫)SCAN:扫码(主扫)
			'P5_orderAmount'=>'10',//交易金额		是	Number(10,2)	0.01	订单金额,以元为单位,最小金额为0.01
			'P6_currency'=>"CNY",//币种类型		是	String(30)	CNY	CNY:人民币
			'P7_authcode'=>'1',//授权码		是	String(50)		payType为刷卡(被扫)时传入一组字符串(付款码),主扫支付类型传入1即可
			'P8_appType'=>'ALIPAY',//客户端类型		是	String(20)	WXPAY	ALIPAY:支付宝WXPAY:微信UNIONPAY:银联JDPAY:京东钱包QQPAY:QQ钱包
			'P9_notifyUrl'=>'http://wallet.test.xijiakeji.com/api/Test/paycallback',//通知回调地址		是	String(300)	http://wap.helipay.com/notify.php	异步接收合利宝支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。
			'P10_successToUrl'=>'http://wap.helipay.com/success.php',//成功跳转URL		否	String(300)	http://wap.helipay.com/success.php	支付完成后,展示支付结果的页面地址(暂不用)
			'P11_orderIp'=>"127.0.0.1",//商户IP		是	String(20)	192.168.10.1	用户下单IP
			'P12_goodsName'=>'三星s9',//商品名称		是	String(128)	Iphone7	商品名称
			'P13_goodsDetail'=>"三星手机",//商户描述		否	String(255)	Iphone7	对交易或商品的描述
			'P14_desc'=>"我是备注",//备注		否	String(100)	备注	订单备注信息,原样返回
		);
		$signKey="E2ASpz3kPCZW3HJVeoQTqj0IOwMSR0F8";
		$str=$this->buildQueryString($params);
		$source=$str."&".$signKey;
		$sign= md5($source);
        $url = "http://test.trx.helipay.com/trx/app/interface.action";
        $params['sign']=$sign;
        $pageContents=curl_post($url,'post',$params,0);
        echo $pageContents; die;
		$obj = json_decode($pageContents);
		$rt1_bizType = $obj->{'rt1_bizType'};
		$rt2_retCode = $obj->{'rt2_retCode'};
		$rt3_retMsg = $obj->{'rt3_retMsg'};
		$rt4_customerNumber = $obj->{'rt4_customerNumber'};
		$rt5_orderId = $obj->{'rt5_orderId'};
		$rt6_serialNumber = $obj->{'rt6_serialNumber'};
		$rt7_orderStatus = $obj->{'rt7_orderStatus'};
		$rt8_orderAmount = $obj->{'rt8_orderAmount'};
		$rt9_currency = $obj->{'rt9_currency'};
		$rt10_desc = $obj->{'rt10_desc'};
		$json_sign = $obj->{'sign'};

		echo "rt1_bizType:".$rt1_bizType."<br/>";
		echo "rt2_retCode:".$rt2_retCode."<br/>";
		echo "rt3_retMsg:".$rt3_retMsg."<br/>";
		echo "rt4_customerNumber:".$rt4_customerNumber."<br/>";
		echo "rt5_orderId:".$rt5_orderId."<br/>";
		echo "rt6_serialNumber:".$rt6_serialNumber."<br/>";
		echo "rt7_orderStatus:".$rt7_orderStatus."<br/>";
		echo "rt8_orderAmount:".$rt8_orderAmount."<br/>";
		echo "rt9_currency:".$rt9_currency."<br/>";
		echo "rt10_desc:".$rt10_desc."<br/>";
		echo "json_sign:".$json_sign."<br/>";
	
	//当retCode为0000证明查询请求受理成功,订单是否支付成功根据r4_orderStatus判断,INIT:已接收;DOING: 处理中;SUCCESS:成功; FAIL:失败;CLOSE:关闭
	}
	function buildQueryString($data) {
        $querystring = '';
        if (is_array($data)) {
    		foreach ($data as $key => $val) {
    			$querystring.="&".$val;
    		}
    	} 
    	return $querystring;
    }
	/**
	 * 获取加密主体信息
	 * @return [type] [description]
	 */
	public function get_body($arr){
		$key = 'Ke0xG8INoyRkoRXxBe98uYUG';
		$json=json_encode($arr,JSON_UNESCAPED_UNICODE);
		$return=$this->encrypt($json,$key);
		return $return;
	}

	public function encrypt($input, $key)
 	{
 		$size = mcrypt_get_block_size(MCRYPT_3DES,'ecb');
 		$input = $this->pkcs5_pad($input, $size);
 		$key = str_pad($key,24,'0');
 		$td = mcrypt_module_open(MCRYPT_3DES, '', 'ecb', '');
 		$iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
 		@mcrypt_generic_init($td, $key, $iv);
 		$data = mcrypt_generic($td, $input);
 		mcrypt_generic_deinit($td);
 		mcrypt_module_close($td);
 		$data = base64_encode($data);
 		return $data;
 	}
 	//数据解密
 	function decrypt($encrypted, $key)
 	{
 		$encrypted = base64_decode($encrypted);
 		$key = str_pad($key,24,'0');
 		$td = mcrypt_module_open(MCRYPT_3DES,'','ecb','');
 		$iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td),MCRYPT_RAND);
 		$ks = mcrypt_enc_get_key_size($td);
 		@mcrypt_generic_init($td, $key, $iv);
 		$decrypted = mdecrypt_generic($td, $encrypted);
 		mcrypt_generic_deinit($td);
 		mcrypt_module_close($td);
 		$y=$this->pkcs5_unpad($decrypted);
 		return $y;
 	}
 	
 	function pkcs5_pad ($text, $blocksize) 
 	{
 		$pad = $blocksize - (strlen($text) % $blocksize);
 		return $text . str_repeat(chr($pad), $pad);
 	}
 	
	function pkcs5_unpad($text)
	{
 		$pad = ord($text{strlen($text)-1});
 		if ($pad > strlen($text)) 
 		{
 		return false;
 		}
 		if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)
 		{
 			return false;
 		}
 		return substr($text, 0, -1 * $pad);
 	}
	/**
	 * 获取签名
	 * @return [type] [description]
	 */
	public function get_sign($body){
		//拼接的原文串加上商户号再加上商户签名秘钥
		$merch_id='C1800193823';
		$sign_key='E2ASpz3kPCZW3HJVeoQTqj0IOwMSR0F8';
		return md5($body.'&'.$merch_id.'&'.$sign_key);
	}
	/**
	 * 发送请求
	 * @return [type] [description]
	 */
	public function send_request($url,$post){
		$res=curl_post($url,'post',$post,0);
		// echo $res;die;
        $result=json_decode($res,true);
        return $result;
	}
}
04-16 881
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值