微信支付,企业号支付个人,php实现
导语:分销商,微商提现怎么提?直接用微信支付。
实现如下:
- 微信支付配置
/*微信支付*/ 'PAY_WEIXIN' => array( 'appid' => 'xxx', 'appsecret' => 'xxxxx', 'mchid' => '1283301801', //商户号 'key' => 'zhudianbaodiandodozhudianbao0527', //商户支付秘钥 'apiclient_cert' => 'Conf/cert/apiclient_cert.pem', //商户证书apiclient_cert.pem 'apiclient_key' => 'Conf/cert/apiclient_key.pem', //商户证书apiclient_key.pem )
arrayToXml
/** * array转xml */ function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) { if (is_numeric($val)) { $xml.="<".$key.">".$val."</".$key.">"; } else $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } $xml.="</xml>"; return $xml; }
Copy after login使用证书,以post方式提交xml到对应的接口url
/** * 作用:使用证书,以post方式提交xml到对应的接口url */ function postXmlSSLCurl($xml, $url, $second, $cert, $key) { $ch = curl_init(); //超时时间 curl_setopt($ch,CURLOPT_TIMEOUT,$second ? $second : $this->timeout); //这里设置代理,如果有的话 //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8'); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); //设置header curl_setopt($ch,CURLOPT_HEADER,FALSE); //要求结果为字符串且输出到屏幕上 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); //设置证书 //使用证书:cert 与 key 分别属于两个.pem文件 //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLCERT,$cert); //默认格式为PEM,可以注释 curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM'); curl_setopt($ch,CURLOPT_SSLKEY, $key); //post提交方式 curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS,$xml); $data = curl_exec($ch); //返回结果 if($data){ curl_close($ch); return $this->xmlToArray($data); } else { $error = curl_errno($ch); echo "curl出错,错误码:$error"."<br>"; curl_close($ch); return false; } }
- 企业向个人付款
//企业向个人付款 public function payToUser($params, $key, $apicent_cert, $apiclient_key) { $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //检测必填参数 if($params["partner_trade_no"] == null) { // exit("退款申请接口中,缺少必填参数partner_trade_no!"."<br>"); }elseif($params["openid"] == null){ exit("退款申请接口中,缺少必填参数openid!"."<br>"); }elseif($params["check_name"] == null){ //NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功) exit("退款申请接口中,缺少必填参数check_name!"."<br>"); }elseif(($params["check_name"] == 'FORCE_CHECK' or $params["check_name"] == 'OPTION_CHECK') && ($params["re_user_name"] == null)){ //收款用户真实姓名。 exit("退款申请接口中,缺少必填参数re_user_name!"."<br>"); }elseif($params["amount"] == null){ exit("退款申请接口中,缺少必填参数amount!"."<br>"); }elseif($params["desc"] == null){ exit("退款申请接口中,缺少必填参数desc!"."<br>"); } $params["mch_appid"] = $this->appid;//公众账号ID $params["mchid"] = $this->mchid;//商户号 $params["nonce_str"] = $this->createNoncestr();//随机字符串 $params['spbill_create_ip'] = $_SERVER['REMOTE_ADDR'] == '::1' ? '192.127.1.1' : $_SERVER['REMOTE_ADDR'];//获取IP $params["sign"] = $this->getSign($params, $key);//签名 $xml = $this->arrayToXml($params); return $this->postXmlSSLCurl($xml, $url, false, $apicent_cert, $apiclient_key); }
- 企业付款
private function _enterprisePay($number, $member_id, $amount, $desc) { // 获取openid $wxuser_id = M('Member')->where(array('id' => $member_id))->getField('wxuser_id'); $openid = M('Wxuser')->where(array('id' => $wxuser_id))->getField('openid'); $pay = C('PAY_WEIXIN'); import('@.Action.WxDevelop'); $enterprise = new WxEnterprise($pay['appid'], $pay['appsecret'], $pay['mchid']); $params = array( 'partner_trade_no' => $number, 'openid' => $openid, 'check_name' => 'NO_CHECK', 'amount' => $amount, // 总计 'desc' => $desc, ); $result = $enterprise->payToUser($params, $pay['key'], $pay['apiclient_cert'], $pay['apiclient_key']); return $result; }
- 处理分销商提现
private function _handle($truename, $price) { // 处理分销商提现 $withdrawid = date("ymdHis") . strval(rand(1000, 9999)); $data = array('withdrawid' => $withdrawid, 'store_id' => $this->store_id, 'member_id' => $this->member_id, 'truename' => $truename, 'price' => $price, 'addtime' => time()); //免审核 if ($price >= C('withdraw_uncheck_value')) { $data['need_check'] = 0; $data['status'] = 1; if ($this->withdrawModel->add($data)) { $result = $this->_enterprisePay($withdrawid, $this->member_id, $price * 100, '分销商(' . $truename . ')提现'); //遇到支付信息出错,转为需审核提现 if ($result['return_code'] != 'SUCCESS') { $this->withdrawModel->where(array('withdrawid' => $withdrawid))->save(array('need_check' => 1, 'status' => 0)); $this->assign('success', 2); } else { //设置微信交易号 $this->withdrawModel->where(array('withdrawid' => $withdrawid))->save(array('payment_no' => $result['payment_no'])); //增加佣金流水,待修复 $data = array('store_id' => $this->store_id, 'user_type' => 2, 'user_id' => $this->shop_id, 'trade_type' => 2, 'trade_no' => $withdrawid, 'price' => -$price, 'status'=> 1, 'message' => $truename.'提现', 'addtime' => time()); M('Twitter_log')->add($data); //减少相应可提佣金 M('Member')->where(array('id' => $this->member_id))->setInc('money', -$price); $this->assign('success', 1); //发送佣金变动消息 import('@.Action.Tmplmsg'); $tmplmsg = new Tmplmsg(); $tmplmsg->send(Tmplmsg::PRICE_CHANGE, $this->member_id, array('token' => $this->token, 'intro' => '分销佣金提现转出', 'price' => $price, 'business' => BUSINESS)); } } else { $this->error('提现信息错误!'); } } //需要审核 else { $this->withdrawModel->add($data); $this->assign('success' , 2); } }
提供企业向用户付款的功能,支持企业通过API接口付款,或通过微信支付商户平台网页功能操作付款。
温馨提示:◆ 给同一个实名用户付款,单笔单日限额2W/2W◆ 给同一个非实名用户付款,单笔单日限额2000/2000◆ 一个商户同一日付款总额限额100W◆ 仅支持商户号已绑定的APPID;◆ 针对付款的目标用户,已微信支付实名认证的用户可提供校验真实姓名的功能,未实名认证的用户无法校验,企业可根据自身业务的安全级别选择验证类型;◆ 付款金额必须小于或等于商户当前可用余额的金额;◆ 已付款的记录,企业可通过企业付款查询查看相应数据。
到账 付款资金将进入目标用户的零钱(微信-我-钱包-零钱)。微信支付将做零钱入账消息通知,零钱收支明细会展示相应记录。
温馨提示:针对无零钱账户的历史客户端版本,资金将进入用户的红包账户,微信支付无消息通知用户,企业可选择自行触达用户。
接口链接:https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers
是否需要证书请求需要双向证书。
数据示例:
<xml><mch_appid>wxe062425f740c30d8</mch_appid><mchid>10000098</mchid><nonce_str>3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS</nonce_str><partner_trade_no>100000982014120919616</partner_trade_no><openid>ohO4Gt7wVPxIT1A9GjFaMYMiZY1s</openid><check_name>OPTION_CHECK</check_name><re_user_name>张三</re_user_name><amount>100</amount><desc>节日快乐!</desc><spbill_create_ip>10.2.3.10</spbill_create_ip><sign>C97BDBACF37622775366F38B629F45E3</sign></xml>
成功示例:
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[]]></return_msg><mch_appid><![CDATA[wxec38b8ff840bd989]]></mch_appid><mchid><![CDATA[10013274]]></mchid><device_info><![CDATA[]]></device_info><nonce_str><![CDATA[lxuDzMnRjpcXzxLx0q]]></nonce_str><result_code><![CDATA[SUCCESS]]></result_code><partner_trade_no><![CDATA[10013574201505191526582441]]></partner_trade_no><payment_no><![CDATA[1000018301201505190181489473]]></payment_no><payment_time><![CDATA[2015-05-19 15:26:59]]></payment_time></xml>
错误示例:
<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg><result_code><![CDATA[FAIL]]></result_code><err_code><![CDATA[SYSTEMERROR]]></err_code><err_code_des><![CDATA[系统繁忙,请稍后再试.]]></err_code_des></xml>
参考资料:https://pay.weixin.qq.com/wiki/doc/api/mch_pay.php?chapter=14_2

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

In WeChat, users can enter their payment password to make purchases, but how do they retrieve their payment password if they forget it? Users need to go to My-Services-Wallet-Payment Settings-to recover their payment password if they forget it. This introduction to how to retrieve your payment password if you forget it will tell you the specific operation method. The following is a detailed introduction, so take a look! WeChat usage tutorial. How to find the WeChat payment password if you forget it? Answer: My-Service-Wallet-Payment Settings-Forgot payment password. Specific method: 1. First, click My. 2. Click on the service inside. 3. Click on the wallet inside. 4. Find the payment settings. 5. Click Forgot payment password. 6. Enter your own information for verification. 7. Then enter the new payment password to change it.

Solution for forgetting WeChat payment password: 1. Open WeChat APP, click "I" in the lower right corner to enter the personal center page; 2. In the personal center page, click "Pay" to enter the payment page; 3. On the payment page , click "..." in the upper right corner to enter the payment management page; 4. In the payment management page, find and click "Forgot payment password"; 5. Follow the page prompts and enter personal information for identity verification. After successful verification, you can Choose the method of "retrieve by swiping your face" or "retrieve by verifying bank card information" to retrieve your password, etc.

There are many food and snack shops provided in the Meituan takeout app, and all mobile phone users log in through their accounts. Add your personal delivery address and contact number to enjoy the most convenient takeout service. Open the homepage of the software, enter product keywords, and search online to find the corresponding product results. Just swipe up or down to purchase and place an order. The platform will also recommend dozens of nearby restaurants with high reviews based on the delivery address provided by the user. The store can also set up different payment methods. You can place an order with one click to complete the order. The rider can arrange the delivery immediately and the delivery speed is very fast. There are also takeout red envelopes of different amounts for use. Now the editor is online in detail for Meituan takeout users. We show you how to set up WeChat payment. 1. After selecting the product, submit the order and click Now

Steps to set the order of deductions for WeChat payment: 1. Open the WeChat APP, click on the "Me" interface, click on "Services", and then click on "Collect and Payment"; 2. Click on "Prioritize Use This Payment Method" under the payment code on the collection and payment interface; 3. Select the preferred payment method you need.

WeChat payment cannot be canceled immediately after successful payment. Refunds usually need to meet the following conditions: 1. The merchant's refund policy. The merchant will formulate its own refund policy, including the refund time window, refund amount and refund method; 2. Payment time, refunds usually require Apply within a certain time frame, and refunds may not be possible beyond this time frame; 3. Goods or service status. If the user has received the goods or enjoyed the service, the merchant may require the user to return the goods or provide corresponding proof; 4. Refund process, etc.

When everyone has nothing to do, they will choose to browse the Xianyu platform. Everyone can find that there are a large number of products on this platform, which can allow everyone to see various second-hand products. Although these products are second-hand products, there is absolutely no problem with the quality of these products, so everyone can buy them with confidence. The prices are very affordable, and they still allow everyone to face-to-face with these products. It is entirely possible for sellers to communicate and conduct some price bargaining operations. As long as everyone negotiates properly, then you can choose to conduct transactions, and when everyone pays here, they want to make WeChat payment, but it seems that the platform It's not allowed. Please follow the editor to find out what the specific situation is. Xianyu

1. First, we need to open the WeChat APP on the mobile phone, and then click to log in to the WeChat account, so that we enter the WeChat homepage. 2. Click the [Me] button in the lower right corner of the WeChat homepage, then select the [Payment] option. We click to enter the payment page. 3. After entering the [Payment] page, click the [Wallet] option to enter, and click [Bill] in the upper right corner of the [Wallet] page.

Alibaba 1688 is a purchasing and wholesale website, and the items there are much cheaper than Taobao. So how does Alibaba use WeChat payment? The editor has compiled some relevant content to share with you. Friends in need can come and take a look. How does Alibaba use WeChat payment? Answer: WeChat payment cannot be used for the time being; 1. On the page where we purchase goods, we click [Change payment method] 2. Then in the pop-up page, we can only go to [Alipay, staged payment] , cashier] can be selected;
