>  기사  >  위챗 애플릿  >  C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

高洛峰
高洛峰원래의
2017-03-07 09:41:422789검색

1. 기업지불 소개

소위 기업지불은 보험업계에서 기능이후 고객클레임, 해지, 상품반품 등을 말한다. 결제, 수집 활동에 대한 보너스 배포, 복권 상호 작용 등의 작업이 모두 기업 결제를 통해 완료될 수 있습니다. 이전에 WeChat Pay는 고객에게 기업에 대한 단방향 결제만 제공할 수 있었습니다.

가맹점이 사용자에게 결제해야 하는 경우 사용자의 '위챗 변경'으로 직접 금액을 이체할 수 있으며, 위챗페이에서 사용자에게 변경 내용을 알리고 변경 영수증 및 지출 내역이 표시됩니다. 해당 기록. 변경 계정이 없는 기존 클라이언트 버전의 경우 자금은 사용자의 빨간 봉투 계정으로 이체되며 WeChat Pay에서 사용자에게 알리는 메시지가 없으며 기업은 자체적으로 사용자에게 연락하도록 선택할 수 있습니다.

인증된 기업 계정은 WeChat 결제 기능을 활성화할 수 있습니다. 인증된 기업 계정은 관리 플랫폼 '서비스 센터'의 '위챗 결제' 포털에서 위챗 결제 기능을 신청할 수 있습니다. WeChat 결제 기능을 개설한 후 기업 계정에는 수집 및 결제라는 두 가지 기능이 있습니다. 사용자 계정에서 기업 계정으로 결제가 이루어지면 해당 금액은 기업 계정과 연결된 판매자 계정으로 들어갑니다. 동시에 기업 계정은 WeChat 빨간 봉투 또는 WeChat 이체를 통해 사용자 계정에 지불할 수 있습니다.

기업 결제는 기업이 사용자에게 결제하는 기능을 제공하며, 기업이 API 인터페이스를 통해 결제하거나 WeChat 결제 가맹점 플랫폼 웹 기능을 통해 결제를 운영할 수 있도록 지원합니다.

펀드 운영과 관련된 기능은 보안 요구 사항이 높으며 운영자가 인증서(가맹점 플랫폼 - 계정 설정 - 비밀번호 보안 - 운영 인증서)를 설치하고 API 또는 웹 페이지를 통해 작동하고 대상 사용자에게 결제해야 합니다( 기업은 APPID+OpenID를 기반으로 사용자를 타겟팅할 수 있습니다. 위챗페이는 실명인증을 받은 사용자에 대해 실명 ​​일치 여부를 확인하는 옵션 기능을 제공할 수 있습니다.

기업 결제 팁:

◆ 동일한 실명 사용자에 대한 결제의 경우 단일 일일 한도는 2W/2W

◆ 결제의 경우 동일한 비실명 사용자에게 사용자 결제시 단일 일일 한도는 2000/2000

◆ 가맹점 당일 총 결제 한도는 100W

◆ 가맹점 계정에 연결된 APPID

◆ 결제 대상 사용자에 대해서는 위챗페이 인증을 받은 사용자에 한하여 실명인증이 되지 않은 사용자는 실명인증 기능을 제공할 수 있습니다. 검증됨 기업은 자사의 보안 수준에 따라 검증 유형을 선택할 수 있습니다.

◆ 결제 금액은 가맹점의 현재 사용 가능한 잔액보다 작거나 같아야 합니다.

◆ 유료인 경우. 기록, 기업은 기업 지불 조회를 통해 해당 데이터를 볼 수 있습니다.

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

2. 기업 결제 API

기업 결제 사업은 위챗 결제 가맹점 플랫폼의 자금 관리 역량을 바탕으로, 가맹점의 편의를 돕기 위해 개인에 대한 기업결제를 쉽게 구현하고, 개발 역량을 갖춘 일부 가맹점에 대해서는 API를 통한 기업결제 완료 기능을 제공합니다.
예를 들어 현재 보험업계에서는 고객에게 보험을 포기하고, 보험금을 지급하고, 보험금을 지급합니다.

기업결제는 가맹점의 사용가능잔액을 사용하며, 사용가능잔액이 충분한지 확인이 필요합니다. 사용 가능한 잔액 확인, 충전, 출금을 위해서는 가맹점 플랫폼의 "자금 관리"에 로그인하여 운영하시기 바랍니다.


인터페이스 주소


인터페이스 링크: https:/ / /api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers


인증서 필수 여부


요청에는 양방향 인증서가 필요합니다. 자세한 인증서는

요청 매개변수

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

를 사용합니다. 제출된 데이터의 예:

<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>

위의 인터페이스 설명과 입력 및 반환 매개변수에 따라 해당 C# 코드 인터페이스를 구축할 수 있습니다.

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

위의 인터페이스 정의에 따라 다음을 정의할 수 있습니다. 인터페이스 정보는 다음과 같습니다

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

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

        ..............

위의 CorpPayJson과 CorpPayResult는 각각 들어오는 매개 변수와 얻은 결과 내용에 따라 둘의 객체 정보를 정의할 수 있습니다. 매개변수에.

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

/// <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; }
    }

/// <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; }
    }

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

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

接口定义及实现好后,我们可以在项目中对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());

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

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

C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.

 

 更多C#은 WeChat 포털을 개발하고 WeChat 결제 기업 결제 패키징 작업을 적용합니다.相关文章请关注PHP中文网!

 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.