完整的微信紅包介面API實現(php版)

來源:互聯網
上載者:User

一、微信紅包文檔說明

目前微信紅包總共分現金紅包和裂變紅包兩種。
1、現金紅包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5
2、裂變紅包:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=16_5
更多請查看:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php

二、php介面實現

本文講解現金紅包的調用,其他的大體一樣,就不去嘗試了。
參數說明:

代碼實現:

片段一、

/**
 * 微信支付
 * @param string $openid 使用者openid
 */
public function pay($re_openid)
{
    include_once('WxPacketClass.php');
    $wxHongBaoHelper = new WxPacketClass($this->app_sign);
    $wxHongBaoHelper->setParameter("nonce_str", $this->great_rand());//隨機字串,丌長於 32 位
    $wxHongBaoHelper->setParameter("mch_billno", $this->app_mchid.date('YmdHis').rand(1000, 9999));//訂單號(28位)
    $wxHongBaoHelper->setParameter("mch_id", $this->app_mchid);//商戶號
    $wxHongBaoHelper->setParameter("wxappid", $this->app_id);
    $wxHongBaoHelper->setParameter("send_name", '揚和宏科技');//紅包寄件者名稱
    $wxHongBaoHelper->setParameter("re_openid", $re_openid);//openid
    $wxHongBaoHelper->setParameter("total_amount", 100);//付款金額,單位分
    $wxHongBaoHelper->setParameter("total_num", 1);//紅包?Х拋莧聳?br />    $wxHongBaoHelper->setParameter("wishing", '給您拜個晚年,祝您晚年幸福!');//紅包祝福詫
    $wxHongBaoHelper->setParameter("client_ip", '127.0.0.1');//調用介面的機器 Ip 地址
    $wxHongBaoHelper->setParameter("act_name", '拜年紅包活動');//活勱名稱
    $wxHongBaoHelper->setParameter("remark", '大家快來搶!');//備忘資訊
    $postXml = $wxHongBaoHelper->create_hongbao_xml();
    $url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';
    $responseXml = $wxHongBaoHelper->curl_post_ssl($url, $postXml);
    $responseObj = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);
    return $responseObj->return_code;
}

片段二、
 
//產生紅包介面XML資訊
/*
<xml>
 <sign>![CDATA[E1EE61A9]]</sign>
 <mch_billno>![CDATA[00100]]</mch_billno>
 <mch_id>![CDATA[888]]</mch_id>
 <wxappid>![CDATA[wxcbda96de0b165486]]</wxappid>
 <send_name>![CDATA[send_name]]</send_name>
 <re_openid>![CDATA[onqOjjXXXXXXXXX]]</re_openid>
 <total_amount>![CDATA[100]]</total_amount>
 <total_num>![CDATA[1]]</total_num>
 <wishing>![CDATA[恭喜發財]]</wishing>
 <client_ip>![CDATA[127.0.0.1]]</client_ip>
 <act_name>![CDATA[新年紅包]]</act_name>
 <act_id>![CDATA[act_id]]</act_id>
 <remark>![CDATA[新年紅包]]</remark>
</xml>
*/

function create_hongbao_xml($retcode = 0, $reterrmsg = "ok"){
  try {
     $this->setParameter('sign', $this->get_sign());
     $commonUtil = new CommonUtil();
     return  $commonUtil->arrayToXml($this->parameters);
 }catch (SDKException $e) {
  die($e->errorMessage());
 }  
}

片段三、

function curl_post_ssl($url, $vars, $second=30,$aHeader=array()) {
 $ch = curl_init();
 //逾時時間
 curl_setopt($ch,CURLOPT_TIMEOUT,$second);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
 //這裡設定代理,如果有的話
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false); 
 
 //cert 與 key 分別屬於兩個.pem檔案
 curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem');
 curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.DIRECTORY_SEPARATOR.'apiclient_key.pem');
 curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.'cert'.DIRECTORY_SEPARATOR.'rootca.pem');
 
 if( count($aHeader) >= 1 ) curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
 
 curl_setopt($ch,CURLOPT_POST, 1);
 curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
 $data = curl_exec($ch);
 if($data){
  curl_close($ch);
  return $data;
 } else {
  $error = curl_errno($ch);
  curl_close($ch);
  return false;
 }
}

代碼結構:

|~action/
| `-PacketClass.php
|~lib/
| |~cert/
| | |-apiclient_cert.pem
| | |-apiclient_key.pem
| | `-rootca.pem
| |-SdkExtraClass.php
| |-WxApi.php
| `-WxPacketClass.php
`-index.php

每個檔案都有詳細的說明。

三、效果展示

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.