码迷,mamicode.com
首页 > 其他好文 > 详细

FileWriter输出文本流

时间:2020-08-09 21:32:44      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:try   tst   nal   字符   软件工程师   ring   软件工程   char   div   

1使用场景在APP(是APP,不是其他,网页或者其他调用方式不同)中内集成支付宝支付

2去支付平台申请一个APPID(唯一标识) ,商家账号(PID,没有就自己申请一个)

3下载一个支付宝开放平台开发助手(其他的也行,只有能生成公钥私钥),生成公钥和私钥(私钥不能泄露),然后上传公钥生成支付宝公钥

应用公钥:商户自己生成的RSA公钥(与应用私钥必须匹配,生成的时候注意是java版本还是其他版本),需要将这个公钥上传到开发平台,验证是否是商户发起的,支付宝会生成对应的公钥。

应用私钥:商户自己生成RSA私钥(与应用公钥必须匹配,不能泄露),使用私钥对请求字符串加密

支付宝公钥:商户使用该公钥验证该结果是否是支付宝返回的

4服务端.net core webapi) sdk,用nuget包管理(也可以去支付宝官网下载https://docs.open.alipay.com/54/106370/

5设置相关类

    /// <summary>
    /// 调用阿里支付接口参数设置
    /// </summary>
    public class AlipayConfig
    {
        /// <summary>
        /// 发起请求的应用ID。沙箱与线上不同,请更换代码中配置;
        /// </summary>
        public string AppId { get; set; }

        /// <summary>
        /// 用于支付宝账户登录授权业务的入参 pid
        /// </summary>
        public string PId { get; set; }

        /// <summary>
        /// 支付宝私匙
        /// </summary>
        public string PrivateKey { get; set; }

        /// <summary>
        /// 应用公钥
        /// </summary>
        public string Publickey { get; set; }

        /// <summary>
        /// 支付宝公匙
        /// </summary>
        public string AlipayPublicKey { get; set; }

        /// <summary>
        ///  服务器异步通知路径
        /// </summary>
        public string notify_url { get; set; }

        /// <summary>
        ///  公匙类型/签名类型
        /// </summary>
        public string SignType { get; set; }

        /// <summary>
        ///  编码格式
        /// </summary>
        public string CharSet { get; set; }

        /// <summary>
        /// 向支付宝发起请求的网关。沙箱与线上不同,请更换代码中配置;沙箱:https://openapi.alipaydev.com/gateway.do上线https://openapi.alipay.com/gateway.do
        /// </summary>
        public string GatewayUrl { get; set; }

        /// <summary>
        /// 调用的接口版本
        /// </summary>
        public string Version { get; set; }

        /// <summary>
        /// 仅支持JSON
        /// </summary>
        public string Format { get; set; }

        public bool KeyFromFile { get; set; }
    }

这些都是必填的,在appsetting中读取

"Alipay": {
    "AppId": "申请的appid","PId": "商户id","PrivateKey": "私钥","Publickey": "公钥",
    "AlipayPublicKey": "阿里公钥",
    "notify_url": "回调函数地址",
    "SignType": "RSA2",
    "CharSet": "UTF-8",
    "GatewayUrl": "https://openapi.alipay.com/gateway.do",
    "Version": "2.0",
    "Format": "json",
    "KeyFromFile": false
  }        /// <summary>
        /// 支付宝统一下单(生成本地订单)
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="curriculumPackageId"></param>
        /// <param name="purchaseQuantity"></param>
        /// <returns></returns>
        public async Task<string> AliOrderAsync(int userId, int curriculumPackageId, int purchaseQuantity)
        {//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
// 组装业务参数model AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); //app调用的是这个模型,网页或者其他的不是这个 //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000],必选 model.TotalAmount = (price).ToString(); //商品的标题 / 交易标题 / 订单标题 / 订单关键字等。必选 model.Subject = curriculumPackage.Title; ///外部第三方的订单号,必选 model.OutTradeNo = orderNumber; AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); // 设置同步回调地址 request.SetReturnUrl(""); // 设置异步通知接收地址() request.SetNotifyUrl(_alipayConfig.notify_url); // 将业务model载入到request request.SetBizModel(model); var response = _client.SdkExecute(request); // Console.WriteLine($"订单支付发起成功,订单号:{response.Body}"); //直接传客户端,不需要做form表单转换为json格式 return response.Body; }

 

FileWriter输出文本流

标签:try   tst   nal   字符   软件工程师   ring   软件工程   char   div   

原文地址:https://www.cnblogs.com/xlwu/p/13466110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!