uni-app中C#配置支付宝信息

发布于 1周前 作者 vueper 来自 Uni-App

uni-app中C#配置支付宝信息
参考支付宝官方的demo配置的方法,亲测可行.

public object GetPayInfo(string _amount)//_amount:付款金额  
{  
    string orderInfo = OrderInfo(_amount);  
    // 对订单做RSA 签名  
    string sign = RSAFromPkcs8.sign(orderInfo, Config.Private_key, Config.Input_charset); //支付宝提供的Config.cs  
    //仅需对sign做URL编码  
    sign = HttpUtility.UrlEncode(sign, Encoding.UTF8);  
    string payInfo = orderInfo + "&sign=\"" + sign + "\"&"  
        + getSignType();  
    return payInfo;  
}  
public string OrderInfo(string price)  
{              
    Dictionary<string, string> payinfo = new Dictionary<string, string>();  
    payinfo.Add("service", "\"mobile.securitypay.pay\"");  
    payinfo.Add("partner", "\"" + Config.Partner + "\"");  
    payinfo.Add("seller_id", "\"" + Config.SELLER + "\"");  
    payinfo.Add("out_trade_no", "\"" + DateTime.Now.ToString("yyyyMMddHHmmssfff")+ "\"");  
    payinfo.Add("subject", "\"****\"");  
    payinfo.Add("body", "\"*****\"");  
    payinfo.Add("total_fee", "\"" + price.ToString() + "\"");  
    payinfo.Add("notify_url", "\"***********"");  
    payinfo.Add("payment_type", "\"1\"");  
    payinfo.Add("_input_charset", "\"UTF-8\"");  
    payinfo.Add("it_b_pay", "\"30m\"");              
    return Core.CreateLinkString(payinfo);  
}  
public String getSignType()  
{  
    return "sign_type=\"RSA\"";  
}

HB中的方法

function topay(rate) {  
    if (w) {  
        return;  
    }  
    //检查是否请求订单中  
    w = plus.nativeUI.showWaiting();  
    mui.getJSON("http://************/api/Pay", {  
        _amount: rate  
    }, function(data) {  
        w.close();  
        w = null;  
        if (data) {  
            plus.payment.request(pays["alipay"], data, function(result) {                             
                plus.nativeUI.alert("支付成功:感谢您的支持。", function() {  
                    mui.back();  
                }, "****");                                   
            }, function(error) {  
                if (error.code == 62001) {  
                    mui.toast("您放弃支付.");  
                    mui.back();  
                } else {  
                    plus.nativeUI.alert("支付失败", null, "请前往会员中心再次对该订单尝试支付,支付失败:" + error.code);  
                }  
            });  
        }  
    });  
}

1 回复

在uni-app中配置支付宝支付通常涉及服务器端(如使用C#)的配置以及客户端(uni-app)的集成。由于uni-app本身是跨平台的前端框架,它本身不直接处理支付配置,而是通过与后端服务器交互来完成支付流程。以下是如何在C#后端配置支付宝支付的代码示例。

1. 引入支付宝SDK

首先,你需要在C#项目中引入支付宝的SDK。你可以通过NuGet包管理器来安装支付宝的SDK。

Install-Package Alipay.AopSdk.Core

2. 配置支付宝参数

在C#项目中,你需要配置支付宝的相关信息,如App ID、私钥、公钥、支付宝网关等。这些信息通常存储在配置文件(如appsettings.json)中。

{
  "Alipay": {
    "AppId": "your_app_id",
    "PrivateKey": "your_private_key",
    "AlipayPublicKey": "your_alipay_public_key",
    "GatewayUrl": "https://openapi.alipay.com/gateway.do",
    "Format": "json",
    "Charset": "UTF-8",
    "SignType": "RSA2"
  }
}

3. 创建支付请求

接下来,你需要创建一个方法来处理支付请求。以下是一个创建支付订单的示例代码:

using Alipay.AopSdk.Core;
using Alipay.AopSdk.Core.Domain;
using Alipay.AopSdk.Core.Request;
using Microsoft.Extensions.Configuration;
using System;

public class AlipayService
{
    private readonly IConfiguration _configuration;

    public AlipayService(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public string CreateOrder(decimal totalAmount, string subject, string outTradeNo)
    {
        var alipayConfig = new DefaultAopClientConfig
        {
            AppId = _configuration["Alipay:AppId"],
            PrivateKey = _configuration["Alipay:PrivateKey"],
            ServerUrl = _configuration["Alipay:GatewayUrl"],
            Format = _configuration["Alipay:Format"],
            Charset = _configuration["Alipay:Charset"],
            SignType = _configuration["Alipay:SignType"],
            AlipayPublicKey = _configuration["Alipay:AlipayPublicKey"]
        };

        var client = new DefaultAopClient(alipayConfig);

        var model = new AlipayTradePagePayModel
        {
            OutTradeNo = outTradeNo,
            TotalAmount = totalAmount.ToString("F2"),
            Subject = subject,
            ProductCode = "FAST_INSTANT_TRADE_PAY"
        };

        var request = new AlipayTradePagePayRequest
        {
            BizModel = model,
            NotifyUrl = "your_notify_url" // 异步回调地址
        };

        var result = client.PageExecute(request, null);
        return result.Body; // 返回支付宝支付表单的HTML代码
    }
}

4. 在uni-app中调用

在uni-app中,你可以通过HTTP请求调用上述C#后端服务来获取支付宝的支付表单HTML,并将其嵌入到页面中。

uni.request({
    url: 'https://your-backend-server/api/alipay/createOrder',
    method: 'POST',
    data: {
        totalAmount: 100,
        subject: 'Test Order',
        outTradeNo: '202304010001'
    },
    success: (res) => {
        const html = res.data;
        // 将html嵌入到页面中
        const div = document.createElement('div');
        div.innerHTML = html;
        document.body.appendChild(div);
    }
});

以上代码展示了如何在C#后端配置支付宝支付,并在uni-app中调用该服务。

回到顶部