C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an

高洛峰
Freigeben: 2017-03-07 09:41:42
Original
2793 Leute haben es durchsucht

1. Einführung in Enterprise Payment

Das sogenannte Enterprise Payment bezieht sich auf Kundenansprüche, Rückkäufe und Produktrückgaben in der Versicherungsbranche nach den Funktionen Vorgänge wie die Zahlung, die Verteilung von Prämien für Inkassoaktivitäten und Lotterieinteraktionen können alle über die Unternehmenszahlung abgewickelt werden. Bisher konnte WeChat Pay Kunden nur Einwegzahlungen an Unternehmen ermöglichen.

Wenn der Händler den Benutzer bezahlen muss, kann er oder sie das Geld direkt in das „WeChat Change“-Konto des Benutzers überweisen. WeChat Pay benachrichtigt den Benutzer über die Änderung und zeigt den Wechselgeldbeleg und die Ausgabendetails an den entsprechenden Datensatz. Bei der historischen Client-Version ohne Wechselkonto wird das Geld auf das rote Umschlagkonto des Benutzers überwiesen. Es gibt keine Nachricht von WeChat Pay, um den Benutzer zu benachrichtigen, und das Unternehmen kann den Benutzer selbst kontaktieren.

Zertifizierte Unternehmenskonten können die WeChat-Zahlungsfunktion aktivieren. Ein zertifizierter Enterprise-Account kann die WeChat-Zahlungsfunktion im „WeChat Payment“-Portal des „Service Center“ der Managementplattform beantragen. Nach dem Öffnen der WeChat-Zahlungsfunktion verfügt das Unternehmenskonto über zwei Funktionen: Inkasso und Zahlung. Wenn eine Zahlung von einem Benutzerkonto auf ein Unternehmenskonto erfolgt, landet das Geld auf dem mit dem Unternehmenskonto verknüpften Händlerkonto. Gleichzeitig können Unternehmenskonten Benutzerkonten über rote WeChat-Umschläge oder WeChat-Überweisungen bezahlen.

Enterprise Payment bietet Unternehmen die Möglichkeit, Benutzer zu bezahlen, und unterstützt Unternehmen dabei, Zahlungen über die API-Schnittstelle durchzuführen oder Zahlungen über die Webfunktion der WeChat-Zahlungshändlerplattform abzuwickeln.

Für Funktionen im Zusammenhang mit Fondsoperationen gelten hohe Sicherheitsanforderungen und es ist erforderlich, dass der Betreiber ein Zertifikat installiert (Händlerplattform – Kontoeinstellungen – Passwortsicherheit – Betriebszertifikat) und Zahlungen an Zielbenutzer durchführt (); Unternehmen können Benutzer basierend auf APPID+OpenID ansprechen. Für Benutzer, die über eine Authentifizierung mit echtem Namen verfügen, kann WeChat Pay die optionale Funktion zur Überprüfung der Konsistenz ihres echten Namens bereitstellen.

Tipps für Unternehmenszahlungen:

◆ Für Zahlungen an denselben Benutzer mit echtem Namen beträgt das einzelne Tageslimit 2W/2W

◆ Für Zahlungen an denselben nicht echten Benutzer Benutzerzahlung, das einzelne Tageslimit beträgt 2000/2000

◆ Das Gesamtzahlungslimit für einen Händler am selben Tag beträgt 100 W

◆Unterstützt nur die APPID, die an das Händlerkonto gebunden ist;

◆ Für die Zielbenutzer der Zahlung können Benutzer, die von WeChat Pay authentifiziert wurden, die Funktion zur Verifizierung ihres echten Namens bereitstellen Der Name kann nicht verifiziert werden.

◆ Der Zahlungsbetrag muss kleiner oder gleich dem aktuell verfügbaren Guthaben des Händlers sein ◆ Für bezahlte Datensätze können Unternehmen die entsprechenden Daten über die Zahlungsabfrage des Unternehmens einsehen.

C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an

2. Enterprise-Payment-API

Das Enterprise-Payment-Geschäft basiert auf den Fondsverwaltungsfunktionen der WeChat-Zahlungshändlerplattform. Um Händlern dabei zu helfen, Unternehmenszahlungen an Einzelpersonen einfach zu realisieren und einigen Händlern mit Entwicklungsfunktionen die Funktion zur Abwicklung von Unternehmenszahlungen über die API bereitzustellen.

Zum Beispiel gibt die aktuelle Versicherungsbranche Policen zurück, zahlt Leistungen und begleicht Ansprüche an Kunden.


Enterprise Payment verwendet das verfügbare Guthaben des Händlers und es muss sichergestellt werden, dass das verfügbare Guthaben ausreicht. Um das verfügbare Guthaben zu überprüfen, Geld aufzuladen und abzuheben, melden Sie sich bitte bei der „Fondsverwaltung“ der Händlerplattform an.


Schnittstellenadresse


Schnittstellenlink: https:/ / /api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers


Ob ein Zertifikat erforderlich ist


Anfrage erfordert ein Zwei-Wege-Zertifikat. Detailliertes Zertifikat verwendet

Anforderungsparameter

C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an Beispiel für übermittelte Daten:

Beispiel für erfolgreich zurückgegebene Daten:
<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>
Nach dem Login kopieren

Gemäß der obigen Schnittstellenbeschreibung sowie den Eingabe- und Rückgabeparametern können wir die entsprechende C#-Codeschnittstelle erstellen
<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>
Nach dem Login kopieren

C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen anGemäß der obigen Schnittstellendefinition, Wir können die Schnittstelleninformationen wie folgt definieren:

/// <summary>
    /// 微信支付接口
    /// </summary>
    public interface ITenPayApi
    {  

        /// <summary>
        /// 企业付款(请求需要双向证书)
        /// 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,
        /// 针对部分有开发能力的商户,提供通过API完成企业付款的功能。 比如目前的保险行业向客户退保、给付、理赔。
        /// 企业付款将使用商户的可用余额,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/ 
        /// 注意:与商户微信支付收款资金并非同一账户,需要单独充值。
        /// </summary>
        /// <param name="json">企业支付数据</param>
        /// <returns></returns>
        CorpPayResult CorpPay(CorpPayJson json);

        ..............
Nach dem Login kopieren

Die oben genannten CorpPayJson und CorpPayResult sind die eingehenden Parameter bzw. die erhaltenen Ergebnisinhalte Die beiden basieren auf den Parametern.

/// <summary>
    /// 企业付款的数据信息
    /// </summary>
    public class CorpPayJson
    {
        public CorpPayJson()
        {
            this.check_name = "FORCE_CHECK";
        }

        /// <summary>
        /// 微信支付分配的终端设备号
        /// </summary>
        public string device_info { get; set; }

        /// <summary>
        /// 用户openid
        /// </summary>
        public string openid { get; set; }

        /// <summary>
        /// 校验用户姓名选项,可以使用 PayCheckName枚举对象获取名称
        /// NO_CHECK:不校验真实姓名 
        /// FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) 
        /// OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
        /// </summary>
        public string check_name { get; set; }

        /// <summary>
        /// 收款用户真实姓名。 
        /// 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
        /// </summary>
        public string re_user_name { get; set; }

        /// <summary>
        /// 企业付款金额,单位为分
        /// </summary>
        public int amount { get; set; }

        /// <summary>
        /// 企业付款操作说明信息。必填。
        /// </summary>
        public string desc { get; set; }

        /// <summary>
        /// 调用接口的机器Ip地址
        /// </summary>
        public string spbill_create_ip { get; set; }
    }
Nach dem Login kopieren

/// <summary>
    /// 企业付款操作的返回结果
    /// </summary>
    public class CorpPayResult : PayResult
    {    
        /// <summary>
        /// 微信分配的公众账号ID(企业号corpid即为此appId)
        /// </summary>
        public string mch_appid { get; set; }

        /// <summary>
        /// 微信支付分配的终端设备号
        /// </summary>
        public string device_info { get; set; }

        /// <summary>
        /// 商户使用查询API填写的单号的原路返回. 
        /// </summary>
        public string partner_trade_no { get; set; }

        /// <summary>
        /// 企业付款成功,返回的微信订单号
        /// </summary>
        public string payment_no { get; set; }

        /// <summary>
        /// 企业付款成功时间
        /// </summary>
        public string payment_time { get; set; }
    }
Nach dem Login kopieren

企业付款的API实现和前面两种红包的处理方式 差不多,一个是传入常规的账号信息,一个是传入业务参数,然后提交获取结果即可,具体代码如下所示。

/// <summary>
        /// 企业付款(请求需要双向证书)
        /// 企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,
        /// 针对部分有开发能力的商户,提供通过API完成企业付款的功能。 比如目前的保险行业向客户退保、给付、理赔。
        /// 企业付款将使用商户的可用余额,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/ 
        /// 注意:与商户微信支付收款资金并非同一账户,需要单独充值。
        /// </summary>
        /// <param name="json">企业支付数据</param>
        /// <returns></returns>
        public CorpPayResult CorpPay(CorpPayJson json)
        {
            CheckAccount();//检查AccountInfo的对象属性值

            WxPayData data = new WxPayData();
            data.SetValue("mch_appid", AccountInfo.UniteAppId);//公众账号appid, 注意是mch_appid,而非wxappid
            data.SetValue("mchid", AccountInfo.MchID);//商户号, 注意是mchid而非mch_id
            data.SetValue("nonce_str", data.GenerateNonceStr());//随机字符串
            data.SetValue("spbill_create_ip", NetworkUtil.GetIPAddress());//终端ip      
            data.SetValue("partner_trade_no", data.GenerateOutTradeNo(AccountInfo.MchID));//随机字符串

            data.SetValue("device_info", json.device_info);//终端ip            
            data.SetValue("openid", json.openid);
            data.SetValue("check_name", json.check_name);
            data.SetValue("re_user_name", json.re_user_name);
            data.SetValue("amount", json.amount);
            data.SetValue("desc", json.desc);

            data.SetValue("sign", data.MakeSign(AccountInfo.PayAPIKey));//最后生成签名

            var url = string.Format("https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers");
            return Helper.GetPayResultWithCert<CorpPayResult>(data, url, AccountInfo.CertPath, AccountInfo.CertPassword);
        }
Nach dem Login kopieren

接口定义及实现好后,我们可以在项目中对API进行调用测试,具体代码如下所示

CorpPayJson json = new CorpPayJson()
            {
                amount = 100,
                check_name = PayCheckName.FORCE_CHECK.ToString(),
                desc = "测试退款",
                openid = this.openId,
                device_info = "",
                re_user_name = "伍华聪",
                spbill_create_ip = NetworkUtil.GetIPAddress()
            };

            var result = api.CorpPay(json);
            var message = string.Format("企业直接付款:{0} {1}", result.Success ? "成功" : "失败", result.Message);
            Console.WriteLine(message);
            Console.WriteLine(result.ToJson());
Nach dem Login kopieren

C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an

付款操作成功后,我们可以看到这个钱是直接到用户钱包里面去的,而且我们也可以在商户后台进行记录的查看,可以看到对应的记录。

C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an

 

 更多C# entwickelt das WeChat-Portal und wendet den WeChat-Zahlungspaketierungsvorgang für Unternehmen an相关文章请关注PHP中文网!

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage