検索
ホームページバックエンド開発PHPチュートリアルWeChat決済、個人向け法人アカウント決済、PHP導入

はじめに: 流通業者の皆様、零細企業から現金を引き出すにはどうすればよいですか? WeChat で直接支払います。

実装は次のとおりです:

  • WeChat支払い構成
/*微信支付*/    '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;   }
  • 証明書を使用して、ポストモードで対応するインターフェイスURLにxmlを送信します

/**    *     作用:使用证书,以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 インターフェイスを介して支払うことをサポートしたり、WeChat 支払いマーチャント プラットフォーム Web ページ機能を介して支払いを操作したりできます。

注意事項: ◆ 同じ実名ユーザーへの支払いの場合、1 日あたりの 1 回の制限は 2W/2W です。 ◆ 同じ非実名ユーザーへの支払いの場合、1 回の 1 日あたりの制限は 2000/2000 です。 ◆ 合計支払い制限1 つの加盟店の同日の使用量は 100W ◆ 加盟店アカウントに紐付けられている APPID のみ対応 ◆ 対象決済利用者については、WeChat Pay 実名認証で認証された利用者が実名認証機能を提供可能実名で認証されていないユーザーは、自身のビジネスのセキュリティ レベルに応じて認証を選択できます。支払済みレコードを使用すると、企業は企業支払クエリを通じて対応するデータを表示できます。

到着すると、支払い資金が対象ユーザーの小銭(WeChat-Me-Wallet-Change)に入金されます。 WeChat Pay は、お釣りがアカウントに入金されたことを通知し、お釣りの受領書と支出の詳細には対応する記録が表示されます。

警告: 変更アカウントのない過去のクライアント バージョンの場合、資金はユーザーの赤い封筒アカウントに入力されます。WeChat Pay からユーザーに通知するメッセージはなく、企業は独自にユーザーに連絡することを選択できます。

インターフェースリンク: 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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
微信支付密码忘记了怎么找回微信支付密码忘记了怎么找回Feb 23, 2024 pm 09:40 PM

微信中用户可以输入支付密码来购物,那么支付密码忘记了怎么找回呢?用户们需要我的-服务-钱包-支付设置-忘记支付密码就能恢复。这篇支付密码忘记找回方法介绍就能告诉大家具体的操作方法,下面就是详细介绍,赶紧看看吧!微信使用教程微信支付密码忘记了怎么找回答:我的-服务-钱包-支付设置-忘记支付密码具体方法:1、首先点击我的。2、点击里面的服务。3、点击里面的钱包。4、找到支付设置。5、点击忘记支付密码。6、输入自己的信息验证。7、然后输入新的支付密码就可以更改了。

微信支付密码忘记了怎么办微信支付密码忘记了怎么办Jan 08, 2024 pm 05:02 PM

微信支付密码忘记了的解决办法:1、打开微信APP,点击右下角的”我“,进入个人中心页面;2、在个人中心页面中,点击“支付”,进入支付页面;3、在支付页面中,点击右上角的“…”,进入支付管理页面;4、在支付管理页面中,找到并点击“忘记支付密码”;5、按照页面提示,输入个人信息进行身份验证,验证成功后,可以选择“刷脸找回”或“验证银行卡信息找回”的方式来找回密码等等。

美团外卖怎么设置微信支付 设置微信付款的方法美团外卖怎么设置微信支付 设置微信付款的方法Mar 12, 2024 pm 10:34 PM

  美团外卖app软件内提供的美食小吃店铺非常多,而且所有的手机用户都是通过账号登录的。添加个人的收货地址以及联系电话,享受最便捷的外卖服务。打开软件首页,即可输入商品关键词,在线搜索就能找到相对应的商品结果,上下滑动选购下单即可,平台也会根据用户提供的配送地址,推荐周边附近数十家好评超高的店铺,还能设置不同的支付方式,一键下单完成订单即可,骑手第一时间安排配送速度非常快,还有不同金额的外卖红包领取使用,现在小编在线详细为美团外卖用户们带来设置微信付款的方法。  1选择好商品后,提交订单,点击立

微信支付扣款顺序怎么设置微信支付扣款顺序怎么设置Sep 06, 2023 am 11:11 AM

微信支付扣款顺序设置步骤:1、打开微信APP,点击“我”界面,点击“服务”,再点击“收付款”;2、点击收付款界面付款码下方的“优先使用此付款方式”;3、选择自己需要的优先支付方式即可。

闲鱼可以用微信支付吗  改成微信付款的方法闲鱼可以用微信支付吗 改成微信付款的方法Mar 12, 2024 pm 12:19 PM

  大家没事的时候,都是会选择逛逛闲鱼这一平台的,大家都能够发现这一平台上,是有着大量的一些商品的存在,都能够让大家看到各种各样的的一些二手的宝贝,虽然是二手的产品,但是这一些产品的质量,绝对都是没有任何的问题,所以大家都能够放心的选购,价格都是特别的实惠,都还是能让大家面对面的与这一些卖家们进行交流沟通,进行一些讲价的操作,完全都是可以的,只要大家谈的妥当的话,那么你们就能够选择进行交易,且大家在这里付款的时候,想要进行微信付款,但是好像平台上是不允许,具体情况如何,跟着小编一起来看看吧。闲鱼

微信支付需要绑定银行卡吗微信支付需要绑定银行卡吗Nov 17, 2022 am 11:57 AM

微信支付可以不绑定银行卡。微信支付不绑定银行卡也可以使用,前提是进行实名认证,只要通过实名认证即可使用微信零钱进行发红包、转账、收款、微信支付等操作。需要注意,微信不绑定银行卡不能提现,且收付款、转账等额度存在限额,单笔和每日最高200元,每月最高500元。

阿里巴巴怎么用微信付款_阿里巴巴1688用微信支付方法阿里巴巴怎么用微信付款_阿里巴巴1688用微信支付方法Mar 20, 2024 pm 05:51 PM

阿里巴巴1688是采购批发网,里面的东西要比淘宝便宜很多。那么阿里巴巴怎么用微信付款呢?小编整理了一些相关内容分享给大家,有需要的朋友可以来看看哦。阿里巴巴怎么用微信付款答案:暂不能使用微信付款;1、我们在购买商品的页面中我们点击其中的【更换支付方式】2、然后在弹出的页面中我们可以到只有【支付宝、分阶段付款、收银台】可以选择;

滴滴出行怎么设置微信支付 设置微信支付的方法滴滴出行怎么设置微信支付 设置微信支付的方法Mar 13, 2024 pm 01:22 PM

  滴滴出行app为大家日常出行提供更多方便,想去哪里就去那里,而且所有的滴滴车辆都是随叫随到的,再也不需要焦急等待了,数十个打车红包免费领,出行速度更快。打开软件首页,根据个人的行程安排,输入出发点以及目的地,正下方不同价位的车辆自由选择,一键下单发布行程出去,滴滴司机都是秒接单的,以最快的速度到达指定地点,上车前核对手机号即可,当然支付车费的方式非常多,微信支付宝都可以,但大家通常都是用微信,一键设置支付轻松搞定,现在小编在线仔细一一为滴滴出行用户们带来设置微信支付的方法。  1、我们在手机

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン