微信小微商户申请入驻接口PHP示例
参考文档为微信平台小微入驻文档
https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=19_2
/*** publicKeyEncrypt 对身份证等敏感信息加密* @param string $string* @return string* @throws WxException*/
protected function publicKeyEncrypt(string $string)
{$crypted = '';$publicKey = $this->getPublicKey();if ($publicKey) {$publicKeyResource = openssl_get_publickey($publicKey);$f = openssl_public_encrypt($string, $crypted, $publicKeyResource, OPENSSL_PKCS1_PADDING);openssl_free_key($publicKeyResource);if ($f) {return base64_encode($crypted);}}throw new WxException(20002);
}/*** MakeSign 生成签名* @param $data* @param string $signType* @return string*/
protected function makeSign(array $data, $signType = 'HMAC-SHA256')
{//签名步骤一:按字典序排序参数ksort($data);$string = $this->toUrlParams($data);//签名步骤二:在string后加入KEY$string = $string . "&key=" . $this->diy_key;//. $this->aes_key;//签名步骤三:MD5加密或者HMAC-SHA256if ($signType == 'md5') {//如果签名小于等于32个,则使用md5验证$string = md5($string);} else {//是用sha256校验$string = hash_hmac("sha256", $string, $this->diy_key);}//签名步骤四:所有字符转为大写$result = strtoupper($string);return $result;
}/*** applyEnter 申请入驻小微商户* @return mixed*/
public function applyEnter(array $params)
{// 校验参数if (!$this->checkParams($params)) {throw new WxException(20004);}// 校验银行卡号前缀是否支持if ($this->accountNumberIsSupport($params['account_number'] ?? '')) {throw new WxException(20003);}$data = ['version' => '2.0','cert_sn' => $this->newResponseData()['serial_no'],'mch_id' => $this->mch_id,'nonce_str' => $this->getRandChar(),'sign_type' => 'HMAC-SHA256','sign' => '','business_code' => $this->getBusinessCode(), // 业务申请编号'id_card_copy' => $params['id_card_copy'], // 身份证人像面照片 media_id'id_card_national' => $params['id_card_national'], // 身份证国徽面照片'id_card_name' => $this->publicKeyEncrypt($params['id_card_name']),'id_card_number' => $this->publicKeyEncrypt($params['id_card_number']),'id_card_valid_time' => $params['id_card_valid_time'], // '["1970-01-01","长期"]' string(50)'account_name' => $this->publicKeyEncrypt($params['account_name']),'account_bank' => $params['account_bank'],'bank_address_code' => $params['bank_address_code'],'bank_name' => $params['bank_name'] ?? '','account_number' => $this->publicKeyEncrypt($params['account_number']),'store_name' => $params['store_name'],'store_address_code' => $params['store_address_code'],'store_street' => $params['store_street'],'store_longitude' => $params['store_longitude'] ?? '','store_latitude' => $params['store_latitude'] ?? '','store_entrance_pic' => $params['store_entrance_pic'],'indoor_pic' => $params['indoor_pic'],'address_certification' => $params['address_certification'] ?? '','merchant_shortname' => $params['merchant_shortname'],'service_phone' => $params['service_phone'],'business' => $params['business'],'product_desc' => $params['product_desc'] ?? '','qualifications' => $params['qualifications'] ?? '','rate' => $params['rate'],'business_addition_desc' => $params['business_addition_desc'] ?? '','business_addition_pics' => $params['business_addition_pics'] ?? '', // ["123","456"] 最多可上传5张照片,请填写已预先上传图片生成好的MediaID'contact' => $this->publicKeyEncrypt($params['contact']),'contact_phone' => $this->publicKeyEncrypt($params['contact_phone']),'contact_email' => isset($params['contact_email']) && !empty($params['contact_email']) ? $this->publicKeyEncrypt($params['contact_email']) : '',];// 签名$data['sign'] = $this->makeSign($data, $data['sign_type']);$url = self::WXAPIHOST . 'applyment/micro/submit';// 数组转xml$xml = $this->toXml($data);// 发起入驻申请请求$res = $this->httpsRequest($url, $xml, [], true);// 处理返回值return $this->disposeReturn($res, ['applyment_id'], ['business_code' => $data['business_code']]);
}//xml转数组
function xmlToArray($xml){if(!$xml){return false;}libxml_disable_entity_loader(true);$data = json_decode(json_encode(simplexml_load_string($xml,'SimpleXMLElement',LIBXML_NOCDATA)),true);return $data;
}//数组转xml
function toXml($arr){if(!is_array($arr) || count($arr)==0) return '';$xml = "<xml>";foreach ($arr as $k => $v){if(!empty($val)){if(is_array($val)){json_encode($val);}$xml .= "<".$k.">".$v."</".$k.">";}}$xml .= "</xml>";return $xml;
}
微信小微商户申请入驻接口PHP示例相关推荐
- nodejs实现微信支付小微商户申请入驻接口
微信支付小微商户可以通过小程序<微信买单服务商助手>来进件,也可以通过API接口来进件(详情可查阅小微商户专属接口文档). 2种方式进件后的商户是有区别的 不同进件方式下的小微商户对比 ...
- 小微商户申请php,微信小微商户申请入驻 - osc_r8q2esik的个人空间 - OSCHINA - 中文开源技术交流社区...
public static string ApplyEnter(string Data) { if (string.IsNullOrWhiteSpace(Data)) return ProtocolM ...
- 微信支付:小微商户申请入驻第三步:平台证书序列号解密和敏感词加密
首先,还是上微信官方链接 微信官方平台证书解密指引 微信官方敏感词加密指引 平台证书解密 定义接口 首先,由于平台证书获取,跟解密,都是平台证书这货的,那就放在同一个service吧.pom文件之前文 ...
- nodejs微信支付小微商户申请入驻时,如何实现图片上传接口
微信支付小微商户可以通过小程序<微信买单服务商助手>来进件,也可以通过API接口来进件(详情可查阅小微商户专属接口文档). 通过API接口进件前需要先在商户资料中的身份证照片和门店照片通过 ...
- 微信支付:小微商户申请入驻第二步:图片上传
回顾 第一步:平台序列号获取 开始图片上传 微信官方图片上传文档 阅读文档可知 请求的url: api.mch.weixin.qq.com/secapi/mch/- 提交方式: multipart/f ...
- 微信小微商户直连接口详解
项目背景: 小微商户根据接口申请入驻.查看状态.进行签约.商户信息配置.Native扫码及小程序发起支付.查询订单.进行退款.查询退款.小微商户资料修改及提现. 一.小微商户进件 遇到问题: 1.返回 ...
- 微信小微商户获取申请状态
/// <summary>/// 获取审核结果/// </summary>/// <param name="business_code">业务申 ...
- 2020微信小微商户、微信支付商业版签约商户流程
商户自助申请拓展码 如失效请联系客服(beingmine)更换 签约步骤 1.扫码进入拓展员 2.选择申请类型小程序 3.填写商户信息 4.填写身份信息 5.填写结算信息 6提交审核中 7确认签约信息 ...
- 个人免费申请微信支付小微商户指南
什么是小微商户 小微商户是指依据法律法规和相关监管规定免于办理工商注册登记.无营业执照的实体特约商户. 微信小微商户 微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入 ...
- 小微商户进件php,【微信支付】小微商户进件 接口分析与源码实现
一.小微商户能力介绍 (摘自 微信小微商户介绍) 1. 快速进件 2. 支持零钱.借记卡.信用卡支付方式 3. 交易手续费支持11档枚举值 4. 每日结算款T+1日自动提现至商户个人银行卡 具体不多说 ...
最新文章
- 在三层交换机上配置DHCP
- python基础--4 元祖
- Windows10 安装 Twisted
- 进程的逻辑设备如何与一个物理设备建立对应的关系?
- html写用户导入,用户基本信息录入.html
- 读《程序员修炼之道——从小工到专家》(The Pragmatic Programmer: From Journeyman to Master)
- 吃鸡电脑配置清单_2020年5月份最佳组装电脑配置清单,吃鸡联盟总有满足你的...
- opengl linux windows,linux – 使用没有X-Window系统的OpenGL
- Linux 下使用Postgre中的命令,要使用postgres这个用户
- IOS不支持2017-09-09的日期格式
- Http代理抓包 Fiddler与Charles
- 计算机电子设计论文,计算机毕业设计电子信息毕业设计电子信息毕业论文
- 不要让采购欺诈吃掉你的利润
- x64dbgpy 自动化控制插件AIP手册
- python相关性系数_聊聊你知道和不知道的相关性系数
- Djano3.0使用-CBV使用实例
- 怎么快捷制作网站icon图标工具
- 爱酱,鹿鸣?!自己怎么做一个虚拟二次元偶像?
- HTML网页设计:一、HTML的基本结构
- android购票日历,2017春运购票日历