目录
一、开通功能
二、下载证书
三、转账
发布
首页 微信小程序 微信开发 企业转账到用户接口的开通

企业转账到用户接口的开通

Mar 16, 2018 pm 01:09 PM
开通 接口 用户

这次给大家带来企业转账到用户接口的开通,企业转账到用户接口开通的注意事项有哪些,下面就是实战案例,一起来看一下。

在微信公众号支付的API中没有这个接口,如果企业需要给用户转账,或者让用户提现或者给用户发红包等需要再商户平台中的产品中心分别开通。 

一、开通功能

开通就是点击一下,很简单。但需要注意的是支持向用户转账的账户和收到用户付款的账户不是同一个,而为了满足此功能,你需要先用财付通进行充值(交易中心--资金管理--充值)。

二、下载证书

证书下载在账户中心--API安全,现在需要手机验证码和商户平台登录密码。下载之后再window上进行安装,安装的密码是商户号。

安装之后并将证书放在网站目录下,用于下一步在代码中进行验证。

三、转账

微信现在提供的demo中没有这一块,下面就根据官方的demo做一些修改。和之前的例子类似,我们都需要用WxPayData对象来操作我们的参数。定义一个TransfersPay对象。

1

2

3

4

5

6

7

8

9

10

11

12

13

  public class TransfersPay

    {        public string openid { get; set; }        public int amount { get; set; }        public string partner_trade_no { get; set; }        public string re_user_name { get; set; }        public string spbill_create_ip { get; set; }        public WxPayData GetTransfersApiParameters()

        {

            WxPayData apiParam = new WxPayData();

            apiParam.SetValue("partner_trade_no", partner_trade_no);

            apiParam.SetValue("openid", openid);

            apiParam.SetValue("check_name""NO_CHECK");

            apiParam.SetValue("amount", amount);

            apiParam.SetValue("desc""提现");

            apiParam.SetValue("spbill_create_ip", spbill_create_ip);

            apiParam.SetValue("re_user_name", re_user_name);            return apiParam;

        }

    }

登录后复制

在官方demo中的WxpayApi中已经包含了公众号支付的相关方法。再增加一个Transfers的方法用来转账:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

 public static WxPayData Transfers(WxPayData inputData, int timeOut = 6)

        {            var url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

            inputData.SetValue("mch_appid", WxPayConfig.APPID);//公众账号ID

            inputData.SetValue("mchid", WxPayConfig.MCHID);//商户号

            inputData.SetValue("nonce_str", WxPayApi.GenerateNonceStr());//随机字符串

            inputData.SetValue("sign", inputData.MakeSign());//签名

            string xml = inputData.ToXml();            var start = DateTime.Now;

            string response = HttpService.Post(xml, url, true, timeOut);            // Portal.MVC.Logger.Info("WxPayApi"+ "UnfiedOrder response : " + response);

            var end = DateTime.Now;            int timeCost = (int)((end - start).TotalMilliseconds);

            WxPayData result = new WxPayData();

            result.FromXml(response);

            ReportCostTime(url, timeCost, result);//测速上报

            return result;

        }

登录后复制

稍微需要注意下的地方就是几个默认参数的名字和别的方法不一样,比如appid和mch_id。转账中是mch_appid和mchid,红包中又叫wxappid和mch_id。然后注意到httpService.post方法第三个参数是带true的。也就是会使用到证书。进入post方法中我们可以看到:

1

2

3

4

5

6

         //是否使用证书

                if (isUseCert)

                {                    string path = HttpContext.Current.Request.PhysicalApplicationPath;                    X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD);

                    request.ClientCertificates.Add(cert);

                    Log.Debug("WxPayApi""PostXml used cert");

                }

登录后复制

这里使用到了证书的路径和密码,密码即商户号。这一切准备好之后就可以controller中进行转账了:

1

2

3

4

5

6

7

8

9

10

11

     [LoginValid]        public ActionResult CashTransfers(string orderNumber)

        {            //var order = new Order(){Amount = 1};           // var openid = "oBSBmwQjqwjfzQlKsFNjxFLSixxx";

            var user = _workContext.CurrentUser;            var order = _paymentService.GetOrderByOrderNumber(orderNumber);            var transfer = new TransfersPay

            {

                openid = user.OpenId,

                amount = (int) order.Amount*100,

                partner_trade_no = order.OrderNumber,

                re_user_name = "stoneniqiu",

                spbill_create_ip = _webHelper.GetCurrentIpAddress()

            };            var data = transfer.GetTransfersApiParameters();            var result = WxPayApi.Transfers(data);            return Content(result.ToPrintStr());

        }

登录后复制

得到结果

这样就实现了转账/提现的功能。

发布

在正式的环境中,我们需要先创建自己的订单,然后向微信请求转账,成功之后对自己的订单进行处理。CashTransfers方法稍作调整。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

       [LoginValid]        public ActionResult CashTransfers(string orderNumber)

        {

            var user = _workContext.CurrentUser;            var order = _paymentService.GetOrderByOrderNumber(orderNumber);            if (string.IsNullOrEmpty(user.OpenId))

            {                return Json(new PortalResult("请用微信登录!"));

            }            if (order == null || order.OrderState != OrderState.Padding)

            {                return Json(new PortalResult("订单有误!"));

            }            

            var transfer = new TransfersPay

            {

                openid = user.OpenId,

                amount = (int) order.Amount*100,

                partner_trade_no = order.OrderNumber,

                re_user_name = "stoneniqiu",

                spbill_create_ip = _webHelper.GetCurrentIpAddress()

            };            var data = transfer.GetTransfersApiParameters();            var result = WxPayApi.Transfers(data);            if (result.GetValue("result_code").ToString() == "SUCCESS")

            {                return Json(new PortalResult(true, "提现成功"));

            }            return Json(new PortalResult(false, result.GetValue("return_msg").ToString()));            

        }

登录后复制

另外一个要注意的是,发布之后老是出现操作超时的错误,建议就是修改超时时间为30秒。默认的6秒容易超时。 统一下单的时候也是。

1

 public static WxPayData Transfers(WxPayData inputData, int timeOut = 30)

登录后复制

如果企业账户的钱没了,会出现以下提示:

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

webpack自动刷新与解析的使用

H5的缓存Manifest的使用


以上是企业转账到用户接口的开通的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用小红书号查找用户?能查到手机号吗? 如何用小红书号查找用户?能查到手机号吗? Mar 22, 2024 am 08:40 AM

随着社交媒体的迅速发展,小红书已经成为了备受青睐的社交平台之一。用户可以通过创建小红书号来展示个人身份,并与其他用户交流互动。如果你需要查找某个用户的小红书号码,可以按照以下简单步骤进行操作。一、如何用小红书号查找用户?1.打开小红书APP,点击右下角的“发现”按钮,然后选择“笔记”选项。2.在笔记列表中,找到你想查找的用户发布的那篇笔记。点击进入笔记详情页。3.在笔记详情页中,点击用户头像下方的“关注”按钮,即可进入该用户的个人主页。4.在用户个人主页右上角,点击三个点按钮,然后选择“个人信息

以超级用户身份登录Ubuntu 以超级用户身份登录Ubuntu Mar 20, 2024 am 10:55 AM

在Ubuntu系统中,root用户通常是禁用状态的。要激活root用户,可以使用passwd命令设置密码,然后使用su-命令以root身份登录。根用户是具有系统管理权限且不受限制的用户。他拥有访问和修改文件、用户管理、软件安装和删除,以及系统配置更改等权限。根用户与普通用户有着明显的区别,根用户拥有系统中最高的权限和更广泛的控制权。根用户可以执行重要的系统命令和编辑系统文件,而普通用户则无法做到这一点。在本指南中,我将探讨Ubuntu根用户,如何以根用户身份登录,以及它与普通用户的不同之处。注意

抖音广告分成怎么开通?抖音广告分成怎么分的? 抖音广告分成怎么开通?抖音广告分成怎么分的? Mar 07, 2024 pm 01:46 PM

抖音作为全球最大的短视频平台之一,吸引了众多品牌和商家的关注。在抖音上投放广告是许多企业宣传推广的重要手段。那么,如何开通抖音广告分成模式呢?下面将围绕这个问题展开讨论。一、抖音广告分成怎么开通?要开通抖音广告分成,你需要进行以下步骤:注册并登录:在抖音广告平台上注册一个账号,并使用该账号登录进入广告主后台。创建广告计划:在广告主后台,选择创建广告计划,并填写相关的广告信息,包括广告类型、投放时段、预算等。定位受众:根据产品或服务的特点,选择适合的目标受众群体,设置地域、年龄、性别等定向条件。制

微信分付怎么开通?微信分付开通设置 微信分付怎么开通?微信分付开通设置 Mar 14, 2024 am 10:00 AM

微信是一款由腾讯公司推出的即时通讯应用,支持跨平台、跨运营商的消息发送与接收,功能丰富,包括语音、视频聊天、朋友圈分享等,深受广大用户喜爱。而微信分付则是微信钱包中的一种支付功能,为用户提供更便捷的支付体验。我们一起学习一下微信分付的开通方式吧。微信分付怎么开通?微信分付开通设置1、打开手机微信,点击右下角的【我】,进入个人主页,2、点击【服务】选项。3、然后点击【钱包】图标。4、在【钱包】板块下,点击【分付】进入介绍页面。5、在分付介绍页面下方,点击【查看我的分付额度】按钮。6、认真阅读分付的

Go语言中常见的编程范式和设计模式 Go语言中常见的编程范式和设计模式 Mar 04, 2024 pm 06:06 PM

Go语言作为一门现代化的、高效的编程语言,拥有丰富的编程范式和设计模式可以帮助开发者编写高质量、可维护的代码。本文将介绍Go语言中常见的编程范式和设计模式,并提供具体的代码示例。1.面向对象编程在Go语言中,可以使用结构体和方法实现面向对象编程。通过定义结构体和给结构体绑定方法,可以实现数据封装和行为绑定在一起的面向对象特性。packagemaini

电脑主板内部接口都有什么 推荐电脑主板内部接口介绍 电脑主板内部接口都有什么 推荐电脑主板内部接口介绍 Mar 12, 2024 pm 04:34 PM

我们在电脑组装的过程中,安装过程虽然简单,不过往往都是在接线上遇到问题,经常有装机用户误将CPU散热器的供电线插到了SYS_FAN上,虽然风扇可以转动,不过在开机可能会有F1报错“CPUFanError”,同时也导致了CPU散热器无法智能调速。下面装机之家分享一下电脑主板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT接口知识科普。电脑主板上CPU_FAN、SYS_FAN、CHA_FAN、CPU_OPT接口知识科普1、CPU_FANCPU_FAN是CPU散热器专用接口,12V工作

Linux系统中的用户密码存储机制解析 Linux系统中的用户密码存储机制解析 Mar 20, 2024 pm 04:27 PM

Linux系统中的用户密码存储机制解析在Linux系统中,用户密码的存储是非常重要的安全机制之一。本文将解析Linux系统中用户密码的存储机制,包括密码的加密存储、密码的验证过程以及如何安全地管理用户密码。同时,将通过具体的代码示例展示密码存储的实际操作过程。一、密码的加密存储在Linux系统中,用户密码并不是以明文的形式存储在系统中,而是经过加密后保存。L

Oracle数据库:一个用户是否可以拥有多个表空间? Oracle数据库:一个用户是否可以拥有多个表空间? Mar 03, 2024 am 09:24 AM

Oracle数据库是一种常用的关系型数据库管理系统,许多用户都会遇到关于表空间的使用问题。在Oracle数据库中,一个用户可以拥有多个表空间,这样可以更好地管理数据存储和组织。本文将探讨一个用户如何在Oracle数据库中拥有多个表空间,并提供具体的代码示例。在Oracle数据库中,表空间是用来存储表、索引、视图等对象的逻辑结构。每个数据库都至少有一个表空间,

See all articles