• 【微信支付踩坑记02】v3版支付简单示例


    v3版生成订单代码

    有好多想说了,后续补充

    /// <summary>
            /// Js下单API
            /// </summary>
            /// <returns></returns>
            [HttpPost("pay/v3")]
            public dynamic GetJS([FromBody]ReceiveSelect obj)
            {
                string transactionsResponse = "";
                try
                {
                    string dataDir = "URL" + "/apiclient_cert.p12";
                  
                    X509Certificate2 Certificate = new X509Certificate2(dataDir , mchid, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
    
                    string serialNo = Certificate.SerialNumber;
    
                    TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0);
                    string TheNum = obj.partner_trade_no;
    
                    V3JsPayObj v3Obj = new V3JsPayObj();
    
                    v3Obj.mchid = mchid;
                    v3Obj.out_trade_no = TheNum;
                    v3Obj.appid = mch_appid;
                    v3Obj.description = obj.desc;
                    v3Obj.notify_url = WechatUrl + @"/userPay/PayReMessage";//
    
                    V3JsDetail theAmount = new V3JsDetail();
                    theAmount.currency = "CNY"; theAmount.total = Convert.ToInt32(Convert.ToDecimal(obj.amount) * 100);
    
                    v3Obj.amount = theAmount;
    
                    Payer ThePayer = new Payer();
                    ThePayer.openid = obj.openId;
    
                    v3Obj.payer = ThePayer;
                    v3Obj.time_expire = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"+"+08:00");
                    v3Obj.attach = "";
    
                    string theJson = JsonConvert.SerializeObject(v3Obj);
    
                    transactionsResponse = postJson("https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi", theJson, privateKey, mchid, serialNo);
    
                    ThePay myObj = JsonConvert.DeserializeObject<ThePay>(transactionsResponse);
    
                    string prepay_id = myObj.prepay_id;
    
                    RaySelect rPay = new RaySelect();
                    rPay.prepay_id = prepay_id;
                    rPay.appid = mch_appid;
                    rPay.mchid = mchid;
                    rPay.description = obj.desc;
                    rPay.time_expire = v3Obj.time_expire;
                    rPay.attach = "";
                    rPay.notify_url = v3Obj.notify_url;
                    rPay.amount_total = theAmount.total.ToString();
                    rPay.amount_currency = "CNY";
                    rPay.payer_openid = obj.openId;
    
                    return new MyMessage<dynamic>
                    {
                        data = rPay,
                        resultCode = 200,
                        message = "操作成功"
                    };
                }
                catch (Exception e)
                {
                    return new MyMessage<dynamic>
                    {
                        resultCode = 999,
                        message = "操作失败"
                    };
                }
            }
  • 相关阅读:
    可变参数模板的递归解析
    在Ubuntu上安装多个版本的g++ 并进行默认版本切换
    不错的威盾PHP加密专家解密算法
    文章相关性分析详细介绍
    c#连接mysql中文乱码解决方案(MySql.Data.dll)
    firefox用12306Helper 0.2结合ie tab+自动订火车票和完成支付全攻略
    Nutch命令大全
    Jtable利用SetModel进行数据绑定
    在php中使用CKEDITOR在线编辑器
    Nutch1.2搜索引擎使用详解
  • 原文地址:https://www.cnblogs.com/Ginease/p/16300216.html
Copyright © 2020-2023  润新知