Asp.net core MVC paypal支付、回调——app支付

最近刚加入了一家跨境物联网公司,刚来接到的需求就是微信支付和paypal支付,微信支付做的人很多了,没什么大的难点,之前的随笔提到过,今天主要来谈谈paypal支付。

首先应该申请一个沙箱环境的支付账号和收款账号,方便后面设置账号信息测试支付用。

刚开始准备工作就遇到一个坑就是文档,因为paypal只要是针对跨境支付的,所以他的文档也都是英文的,这样对于一个英文底子差的人真的是硬伤(最头痛的是电脑一翻译就卡),没办法只能硬着头皮一点点的看,实在是看不懂的就百度一段段翻译。看完了文档就下载了paypal的sdk,sdk版本很多选择适合自己的就行,由于我用的是.net core直接在nuget里面引用paypal的dll就行了。直接贴一下核心代码仅供参考:

由于我们是写的wabapi接口供APP端调用,所以调起paypal支付主要是APP端完成的,但是刚开始没弄清楚流程,自己也研究了下pc端的调起方式,引用了sdk后用里面的东西是很简单的

我这边调起主要用的public static Payment Create(APIContext apiContext, Payment payment);参数根据实体类填充就好。

我们api主要是做支付后的后台处理操作,所以拿到APP支付的ID就能通过sdk获取到支付的详细信息Payment.Get(apiContext, paypalId),接口就可以对信息入库了。

以为这样就完了的,后来为了保险,又加上了paypal的异步回调IPN

var body = string.Empty;
using (var reader = new StreamReader(Request.Body, Encoding.UTF8))
{
body = await reader.ReadToEndAsync();
}
body = "cmd=_notify-validate&" + body;

var paras = body.Slice("&").ToDictionary(x => x.Slice("=", 2)[0], x => WebUtility.UrlDecode(x.Slice("=", 2)[1]));

例如orderID=paras.Peek("txn_id")

var content = new FormUrlEncodedContent(paras);

//_paypalConfig.ValidateUrl配置的沙箱地址:https://www.sandbox.paypal.com/cgi-bin/webscr
var response = await client.PostAsync(_paypalConfig.ValidateUrl, content);
var message = await response.Content.ReadAsStringAsync();

拿到回调的信息后判断message.Equals("VERIFIED")&&paras.Peek("payment_status").Equals("Completed")同时都满足后台再给用户完成充值。

OK,基本流程就是这样了,当然这个只是个人做法,仅供参考!!!

时间: 2024-08-29 04:21:12

Asp.net core MVC paypal支付、回调——app支付的相关文章

007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing views and layout pages 修改视图和布局页 2.Change the title and menu link in the layout file 在布局文件中修改标题与菜单 3.Passing Data from the Controller to the View 从控制器向视图

Building a Web App with ASP.NET Core, MVC, Entity Framework Core, Bootstrap, and Angular

Since I have spent many years on Windows Application development in my first three years of software career.  I was interested in the C#, had tried to understand the basic knowledge about C#. The programs, the patterns, the object-oriented methodolog

ASP.NET Core MVC之Serilog日志处理,你了解多少?

前言 本节我们来看看ASP.NET Core MVC中比较常用的功能,对于导入和导出目前仍在探索中,项目需要自定义列合并,所以事先探索了如何在ASP.NET Core MVC进行导入.导出,更高级的内容还需等我学习再给出. EntityFramework Core 在学习ASP.NET Core MVC之前我们来看看在EF Core中如何更新对象指定属性,这个问题之前我们已经探讨过,但是还是存在一点问题,请往下看. public void Update(T entity, params Expr

【目录】开始使用ASP.NET Core MVC和Visual Studio

参照微软教程:Building your first ASP.NET Core MVC app with Visual Studio This series of tutorials will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio. Getting started Adding a controller Adding a view Adding a model Workin

ASP.NET Core MVC/WebAPi 模型绑定探索

前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用到了,你再去看理论性的文章时才会豁然开朗,这是我一直以来学习技术的方法.本文我们来讲解.NET Core中的模型绑定. 话题 在ASP.NET Core之前MVC和Web APi被分开,也就说其请求管道是独立的,而在ASP.NET Core中,WebAPi和MVC的请求管道被合并在一起,当我们建立控

第二章 指南(2)用 Visual Studio 和 ASP.NET Core MVC 创建首个 Web API

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 原文:Building Your First Web API with ASP.NET Core MVC and Visual Studio 作者:Mike Wasson 和 Rick Anderson 翻译:谢炀(kiler) 校对:何镇汐.

ASP.NET Core MVC/WebAPi如何构建路由?

前言 本节我们来讲讲ASP.NET Core中的路由,在讲路由之前我们首先回顾下之前所讲在ASP.NET Core中的模型绑定这其中有一个问题是我在项目当中遇见的,我们下面首先来看看这个问题. 回顾ASP.NET Core模型绑定 我们有这样一个场景:修改个人资料中的各个属性,此时每个属性的值的类型肯定是不一样的,所以我们将值定义为object,如下model. public class BlogViewModel { public string prop { get; set; } publi

【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)

HTTP is not just for serving up web pages. It's also a powerful platform for building APIs that expose services and data. HTTP is simple, flexible, and ubiquitous. Almost any platform that you can think of has an HTTP library, so HTTP services can re

在ASP.NET Core MVC中构建简单 Web Api

Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 Web Api 程序怎么办呢? 在 GitHub 中的 ASP.NET Core MVC 源码里面,我们只要关注 Microsoft.AspNetCore.Mvc 这个包,那么除了这个包之外它还包含这些: Microsoft.AspNetCore.Mvc.ApiExplorer Microsoft.