posts - 34,comments - 5,views - 95376

本文讲解  uni-app如何调用支付宝进行支付,服务端为 .net编写。

客户端:uni-app 编写  1、根据服务端生成的订单信息发起支付。

服务端:.net 编写 1、生成订单信息。2、接收支付宝异步反馈支付信息。

 

先说重点  uni-app 不支持支付宝沙箱测试!不支持支付宝沙箱测试!!不支持支付宝沙箱测试!!!(重要的事情说三遍,为此我浪费了半天。上线应用没签约支付又浪费了半天)。

客户端很简单 一句代码搞定:  参考官方文档:https://uniapp.dcloud.io/api/plugins/payment?id=requestpayment (5+App 支付)

 

复制代码
AliPay: function() {    
    uni.requestPayment({
        provider: 'alipay',
        orderInfo:'服务端生成的支付订单信息',
        success: function(res) {
            console.log('success:' + JSON.stringify(res));
        },
        fail: function(err) {
            console.log('fail:' + JSON.stringify(err));
        }
    });
},
View Code
复制代码

 

服务端编写代码之前,需要去支付宝进行app应用创建。详细流程:https://docs.open.alipay.com/204/105297/

注 :创建后的应用是不能用于真实环境测试的,必须申请应用上线(审核比较容易)。并且签约支付功能,签约!签约!!签约!!!(没签约的可以用沙箱环境测试生成的订单信息)

 

三个密钥: 商户应用私钥(自己保存生成订单用)、商户应用公钥(上传到支付宝应用,用来生成支付宝公钥)、支付宝公钥(根据商户应用公钥自动生成,生成订单用到)。

创建应用后

  1、设置密钥 工具下载地址:https://docs.open.alipay.com/291/105971  私钥保存到本地,公钥填写到支付宝应用,得到支付宝公钥。

 

 

 从上面的图 我们可以知道,我们只需要的两个东西:1、APPID、2、支付宝公钥(根据用户上传的公钥自动生成)(网关是固定的,真实环境:https://openapi.alipay.com/gateway.do。沙箱环境:https://openapi.alipaydev.com/gateway.do。 有区别!)。

做完上面,我们就可以下载对应的SDK了。下载地址:https://docs.open.alipay.com/54/106370/。 上面有详细的使用说明。多看几遍。

我用的是 .net,我新建了一个WebService项目,把上面的SDK 应用到项目就好了。

 代码:

复制代码
private string RSA2 = "RSA2";
private string CHARSET = "utf-8";


private string URL = "https://openapi.alipaydev.com/gateway.do";        // 这个是沙箱环境的网关,真实环境需要改一下
private string APPID = "";
private string APP_PRIVATE_KEY = "私钥字符串拷过来";
private string ALIPAY_PUBLIC_KEY = "z支付宝公钥拷贝过来";


[WebMethod(Description = "获取订单信息")]
public string getAliPayOrderInfo()
{
    IAopClient client = new DefaultAopClient(URL, APPID, APP_PRIVATE_KEY, "json", "1.0", RSA2, ALIPAY_PUBLIC_KEY, CHARSET, false);
   
    AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

    model.Body = "我是测试数据";
    model.Subject = "App支付测试DoNet";
    model.TotalAmount = "0.01";
    model.ProductCode = "QUICK_MSECURITY_PAY";
    model.OutTradeNo = "20170216555555555555555501";
    model.TimeoutExpress = "30m";


    AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
    request.SetBizModel(model);
   
    AlipayTradeAppPayResponse response = client.SdkExecute(request);
    return response.Body;

}
View Code
复制代码

运行结果如下图,直接拷贝到客户端的代码里就可以了。

 正式上线的App 并且已经签约了支付功能,可以运行。如果是沙箱环境,则会报错  “[payment支付宝:62009]未知错误”。

 

支付宝提供了调试工具用来验证上面的订单信息。工具下载地址:https://openclub.alipay.com/read.php?tid=7695

选择沙箱环境,把上面生成的订单信息考本到文本框,点击“点我去支付”,可以唤起支付页面而不报错,就说明在服务端的请求参数没有问题。

 

posted on   末日之花  阅读(26153)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示