C# 微信支付之JSAPI支付

2

C# 微信支付之JSAPI支付

微信支付之JSAPI支付

前言----

微信支付是微信公众平台提供的一种在线支付服务,它支持多种支付方式,包括APP支付、JSAPI支付等。在前面的文章中,我们已经介绍了微信支付的APP支付,这篇文章将详细描述JSAPI支付。

什么是JSAPI支付

JSAPI支付是一种在微信浏览器内使用的支付方式,它主要用于公众号里面的H5应用的支付。与APP支付不同,JSAPI支付不需要用户下载和安装任何APP,只要在微信浏览器中打开相关页面,就可以进行支付。

开发前的准备

1. 微信公众平台:首先,你需要在微信公众平台上创建一个账号,并且绑定一个商户ID。商户ID是用于接收支付结果的唯一标识。

2. 微信浏览器:JSAPI支付只能在微信浏览器中使用,因此你需要确保用户使用的是微信浏览器。

3. H5应用:JSAPI支付主要用于公众号里面的H5应用的支付。因此,你需要先创建一个H5应用,并且将其绑定到你的微信公众平台账号上。

JSAPI支付流程

1. 生成预付单:首先,用户在微信浏览器中打开相关页面,点击支付按钮后,系统会生成一个预付单。

2. 获取预付单信息:系统会将预付单的信息传递给你的服务器端程序。这个信息包括订单号、金额等。

3. 向微信支付API发起请求:接收到预付单信息后,你需要向微信支付API发起一个请求,用于确认支付。

4. 微信支付API处理请求:微信支付API会处理你的请求,并且返回一个结果。这个结果包括支付是否成功等信息。

5. 更新订单状态:如果支付成功,系统会将订单状态更新为已付款。

JSAPI支付接口

以下是JSAPI支付的主要接口:

* ` ` System;

using System.Net.Http;

using System.Text.Json;

using Microsoft.Extensions.Configuration;

namespace WeChatPayJsApi{

public class Program {

private readonly IConfiguration _configuration;

public Program(IConfiguration configuration)

{

_configuration = configuration;

}

public async Task Main(string[] args)

{

//生成预付单 var prepayId = await GeneratePrepayIdAsync();

// 向微信支付API发起请求 var result = await ConfirmPayAsync(prepayId);

// 更新订单状态 if (result.IsSuccess())

{

Console.WriteLine("支付成功!");

}

else {

Console.WriteLine("支付失败!");

}

}

private async Task GeneratePrepayIdAsync()

{

var = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, " {

Content = new StringContent(JsonSerializer.Serialize(new {

appid = _configuration["WeChat:AppId"],

mch_id = _configuration["WeChat:MchId"],

nonce_str = Guid.NewGuid().ToString(),

body = "测试支付",

out_trade_no = Guid.NewGuid().ToString(),

total_fee =1,

spbill_create_ip = "192.168.1.100"

}), Encoding.UTF8, "application/json")

};

var response = await if (response.IsSuccessStatusCode)

{

return await response.Content.ReadAsStringAsync();

}

else {

throw new Exception($"生成预付单失败!");

}

}

private async Task ConfirmPayAsync(string prepayId)

{

var = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, " {

Content = new StringContent(JsonSerializer.Serialize(new {

appid = _configuration["WeChat:AppId"],

mch_id = _configuration["WeChat:MchId"],

nonce_str = Guid.NewGuid().ToString(),

transaction_id = prepayId,

out_trade_no = Guid.NewGuid().ToString()

}), Encoding.UTF8, "application/json")

};

var response = await if (response.IsSuccessStatusCode)

{

return JsonSerializer.Deserialize(await response.Content.ReadAsStringAsync());

}

else {

throw new Exception($"确认支付失败!");

}

}

private class PayResult {

public bool IsSuccess() => true;

}

}

}

```

以上是使用C语言进行JSAPI支付的示例代码。

支付

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 前端 VUE 微信支付 JSAPI

下一篇 解决Hbuilder打包的APP微信支付时无法唤起支付,且提示{“code“:-100,“message“:“[payment微信:-1]...